Skip to content
Structly Docs
한국어

API reference

Table

On this page

This page is generated from the public contract. Descriptions are shown in the original Korean.

다섯 RDB의 Table 정의·이동.

Database 소속 관계형 Table 전체 목록#

GET /api/databases/{database_id}/tables

다섯 RDB 통합 Table. 부모 engine·Table을 같은 Snapshot으로 조회. 상세는 조건 비교, 목록은 전체 객체 배열.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
database_idpathstringYes소속 Database ID.

Responses

StatusDescription
200Database 소속 RelationalTable 전체 목록
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403ORGANIZATION_UNVERIFIED: 현재 Organization 또는 Agent 토큰의 Organization이 인증 대기입니다.
404DATABASE_NOT_FOUND
409DATABASE_ENGINE_MISMATCH 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
500INTERNAL_ERROR

200 response body

An array (RelationalTable[]). The table lists item fields.

NameTypeRequiredDescription
idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespaceStoredNamespaceYesMySQL·MariaDB만 빈 값, PostgreSQL·Oracle·SQL Server 필수 이름. 부모 제품과 함께 검증.
nameStoredIdentifierYes앞뒤 U+0020을 제거한 1..200 code point 저장 문자열. 제어 문자 금지. 대소문자·Unicode 정규화 없음.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.
created_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.
updated_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.

Database 소속 관계형 Table 생성#

POST /api/databases/{database_id}/tables

공통 값→부모 존재→RDB 여부→부모 제품 값→이름 중복. 기존 /api/tables Location을 사용한다.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
database_idpathstringYes소속 Database ID.
OriginheaderstringNo세션 쿠키로 인증한 상태 변경 요청에서 필수이며 서버 origin과 같아야 합니다. Bearer 토큰 요청에는 적용하지 않습니다.

Request body

application/json · Required: Yes

Type: RelationalTableCreate

NameTypeRequiredDescription
namespacestringYes필수 string. trim 후 MySQL·MariaDB는 빈 값, PostgreSQL·Oracle·SQL Server는1..200자. 목적지 부모 engine 서비스 검증.
namestringYes앞뒤 U+0020 제거 후 1..200 Unicode code point. 제어 문자 금지. 정규화 전 입력 길이/빈 값은 서비스에서 검사합니다.
summarystringNo목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringNo공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionInputYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.

Responses

StatusDescription
201Database 소속 RelationalTable 생성
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403Origin 검사 실패 또는 인증 대기 Organization 사용 거부입니다.
404DATABASE_NOT_FOUND
409부모 engine·이름 충돌 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
413PAYLOAD_TOO_LARGE
415UNSUPPORTED_MEDIA_TYPE
422VALIDATION_FAILED
500INTERNAL_ERROR

201 response body

Type: RelationalTable

NameTypeRequiredDescription
idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespaceStoredNamespaceYesMySQL·MariaDB만 빈 값, PostgreSQL·Oracle·SQL Server 필수 이름. 부모 제품과 함께 검증.
nameStoredIdentifierYes앞뒤 U+0020을 제거한 1..200 code point 저장 문자열. 제어 문자 금지. 대소문자·Unicode 정규화 없음.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.
created_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.
updated_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.

관계형 Table 상세#

GET /api/tables/{id}

다섯 RDB 통합 Table. 부모 engine·Table을 같은 Snapshot으로 조회. 상세는 조건 비교, 목록은 전체 객체 배열.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
idpathstringYes리소스 ID.
If-None-MatchheaderstringNo상세 GET에서 약한 비교. 강한/약한 목록·별표 허용. 일치 304. 미존재 404 우선. 목록과 다른 Method에서는 무시합니다.

Responses

StatusDescription
200RelationalTable 상세
304조건 일치. 본문·Content-Type 없음.
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403ORGANIZATION_UNVERIFIED: 현재 Organization 또는 Agent 토큰의 Organization이 인증 대기입니다.
404TABLE_NOT_FOUND
409ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
500INTERNAL_ERROR

200 response body

Type: RelationalTable

NameTypeRequiredDescription
idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespaceStoredNamespaceYesMySQL·MariaDB만 빈 값, PostgreSQL·Oracle·SQL Server 필수 이름. 부모 제품과 함께 검증.
nameStoredIdentifierYes앞뒤 U+0020을 제거한 1..200 code point 저장 문자열. 제어 문자 금지. 대소문자·Unicode 정규화 없음.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.
created_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.
updated_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.

관계형 Table 전체 수정·Database 이동#

PUT /api/tables/{id}

공통 값 검증→현재 존재→If-Match→목적지 존재/RDB 여부→목적지 제품별 namespace·정의422→이름409. RDB 간 이동 허용. 부모 ID 순 잠금→자식 잠금 아래 최종 부모 engine·revision을 재확인한다.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
idpathstringYes리소스 ID.
If-MatchheaderstringYes상세 GET의 단일 강한 ETag. 별표·약한/복수 태그는 400. 일반 검사 후 누락 428·불일치 412. 미존재 404·Database 삭제 불가 409 우선. 날짜 조건으로 대체하지 않습니다.
OriginheaderstringNo세션 쿠키로 인증한 상태 변경 요청에서 필수이며 서버 origin과 같아야 합니다. Bearer 토큰 요청에는 적용하지 않습니다.

Request body

application/json · Required: Yes

Type: RelationalTableUpdate

NameTypeRequiredDescription
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespacestringYes필수 string. trim 후 MySQL·MariaDB는 빈 값, PostgreSQL·Oracle·SQL Server는1..200자. 목적지 부모 engine 서비스 검증.
namestringYes앞뒤 U+0020 제거 후 1..200 Unicode code point. 제어 문자 금지. 정규화 전 입력 길이/빈 값은 서비스에서 검사합니다.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionInputYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.

Responses

StatusDescription
200RelationalTable 전체 수정·Database 이동
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403Origin 검사 실패 또는 인증 대기 Organization 사용 거부입니다.
404TABLE_NOT_FOUND
409대상 Database·engine·이름 충돌 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
412PRECONDITION_FAILED
413PAYLOAD_TOO_LARGE
415UNSUPPORTED_MEDIA_TYPE
422VALIDATION_FAILED
428PRECONDITION_REQUIRED
500INTERNAL_ERROR

200 response body

Type: RelationalTable

NameTypeRequiredDescription
idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespaceStoredNamespaceYesMySQL·MariaDB만 빈 값, PostgreSQL·Oracle·SQL Server 필수 이름. 부모 제품과 함께 검증.
nameStoredIdentifierYes앞뒤 U+0020을 제거한 1..200 code point 저장 문자열. 제어 문자 금지. 대소문자·Unicode 정규화 없음.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.
created_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.
updated_atstring(date-time)Yes서버가 기록한 UTC RFC 3339 시각. 저장된 마이크로초 정밀도를 보존합니다. 동시성 토큰이나 항상 증가하는 버전 번호가 아닙니다.

관계형 Table 삭제#

DELETE /api/tables/{id}

부모 잠금→자식 잠금 아래 존재·If-Match·현재 소속을 재확인한다.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
idpathstringYes리소스 ID.
If-MatchheaderstringYes상세 GET의 단일 강한 ETag. 별표·약한/복수 태그는 400. 일반 검사 후 누락 428·불일치 412. 미존재 404·Database 삭제 불가 409 우선. 날짜 조건으로 대체하지 않습니다.
OriginheaderstringNo세션 쿠키로 인증한 상태 변경 요청에서 필수이며 서버 origin과 같아야 합니다. Bearer 토큰 요청에는 적용하지 않습니다.

Responses

StatusDescription
204RelationalTable 삭제
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403Origin 검사 실패 또는 인증 대기 Organization 사용 거부입니다.
404TABLE_NOT_FOUND
409연결 Service가 있어 Table을 삭제할 수 없습니다. 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
412PRECONDITION_FAILED
428PRECONDITION_REQUIRED
500INTERNAL_ERROR

관계형 Table 생성 후보 사전 검증(저장 없음)#

POST /api/databases/{database_id}/tables/validate

POST /api/databases/{database_id}/tables와 같은 요청 본문·제품별 검증·이름 중복 검사를 저장 없이 실행합니다. 성공은 valid:true·operation:create이며 실패는 생성과 같은 상태·오류를 반환합니다. 검증 성공은 조회 시점의 유효성만 뜻하며 저장 성공을 보장하지 않습니다.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
database_idpathstringYes소속 Database ID.
OriginheaderstringNo세션 쿠키로 인증한 상태 변경 요청에서 필수이며 서버 origin과 같아야 합니다. Bearer 토큰 요청에는 적용하지 않습니다.

Request body

application/json · Required: Yes

Type: RelationalTableCreate

NameTypeRequiredDescription
namespacestringYes필수 string. trim 후 MySQL·MariaDB는 빈 값, PostgreSQL·Oracle·SQL Server는1..200자. 목적지 부모 engine 서비스 검증.
namestringYes앞뒤 U+0020 제거 후 1..200 Unicode code point. 제어 문자 금지. 정규화 전 입력 길이/빈 값은 서비스에서 검사합니다.
summarystringNo목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringNo공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionInputYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.

Responses

StatusDescription
200검증 성공. 저장하지 않으며 ETag·Location도 없습니다.
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403Origin 검사 실패 또는 인증 대기 Organization 사용 거부입니다.
404DATABASE_NOT_FOUND
409부모 engine·이름 충돌 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
413PAYLOAD_TOO_LARGE
415UNSUPPORTED_MEDIA_TYPE
422VALIDATION_FAILED
500INTERNAL_ERROR

200 response body

Type: ValidationResult

NameTypeRequiredDescription
validtrueYes
operationstringYesValues: create, update

관계형 Table 수정 후보 사전 검증(저장 없음, 이동 포함)#

PUT /api/tables/{id}/validate

PUT /api/tables/{id}와 같은 요청 본문·If-Match·대상 Database·engine·이름 중복 검사를 저장 없이 실행합니다. 성공은 valid:true·operation:update이며 실패는 전체 수정과 같은 상태·오류를 반환합니다. 검증 성공은 조회 시점의 유효성만 뜻하며 저장 성공을 보장하지 않습니다.

Authentication: Session cookie or Agent token

Parameters

NameInTypeRequiredDescription
idpathstringYes리소스 ID.
If-MatchheaderstringYes상세 GET의 단일 강한 ETag. 별표·약한/복수 태그는 400. 일반 검사 후 누락 428·불일치 412. 미존재 404·Database 삭제 불가 409 우선. 날짜 조건으로 대체하지 않습니다.
OriginheaderstringNo세션 쿠키로 인증한 상태 변경 요청에서 필수이며 서버 origin과 같아야 합니다. Bearer 토큰 요청에는 적용하지 않습니다.

Request body

application/json · Required: Yes

Type: RelationalTableUpdate

NameTypeRequiredDescription
database_idstringYesStructly ID. Sonyflake로 발급한 정수를 고정 11자리 Base62(0-9A-Za-z)로 표현하며 대소문자를 구분합니다.
namespacestringYes필수 string. trim 후 MySQL·MariaDB는 빈 값, PostgreSQL·Oracle·SQL Server는1..200자. 목적지 부모 engine 서비스 검증.
namestringYes앞뒤 U+0020 제거 후 1..200 Unicode code point. 제어 문자 금지. 정규화 전 입력 길이/빈 값은 서비스에서 검사합니다.
summarystringYes목록·테이블에 한 줄로 표시하는 핵심 요약입니다. 최대 120 Unicode 코드 포인트이며 앞뒤 공백을 보존합니다. 줄바꿈·탭 등 제어 문자는 거부합니다. 빈 문자열은 요약 없음입니다. 상세 설명은 description에 기록합니다.
descriptionstringYes공백·개행을 보존하며 U+0000을 거부합니다. 빈 문자열로 설명을 비웁니다. null은 허용하지 않습니다.
definitionRelationalTableDefinitionInputYes배열 순서 보존, 공통 Column·키·Index와 기존 PostgreSQL 정의 보존. 참조·PK nullable·제품별 전용 필드는 서비스 검증.

Responses

StatusDescription
200검증 성공. 저장하지 않으며 ETag도 없습니다.
400잘못된 경로 ID 또는 요청 형식
401UNAUTHENTICATED: 세션·토큰이 없거나 만료·폐기되었습니다.
403Origin 검사 실패 또는 인증 대기 Organization 사용 거부입니다.
404TABLE_NOT_FOUND
409대상 Database·engine·이름 충돌 또는 ORGANIZATION_REQUIRED: 세션에 현재 Organization이 없습니다.
412PRECONDITION_FAILED
413PAYLOAD_TOO_LARGE
415UNSUPPORTED_MEDIA_TYPE
422VALIDATION_FAILED
428PRECONDITION_REQUIRED
500INTERNAL_ERROR

200 response body

Type: ValidationResult

NameTypeRequiredDescription
validtrueYes
operationstringYesValues: create, update