OpenAPI Specification
openapi: 3.0.3
info:
contact:
email: team@structify.ai
name: Structify Team
description: Every enterprise's data team.
license:
name: Discuss directly with founders for license.
url: https://structify.ai
title: Structify account admin API
version: 0.1.0
servers:
- description: Production server
url: https://api.structify.ai
- description: Local server
url: http://localhost:8080
security:
- api_key: []
- session_token: []
tags:
- description: Admin endpoints
name: admin
paths:
/admin/chat/templates:
get:
operationId: admin_list_chat_templates
parameters:
- in: query
name: chat_session_id
required: false
schema:
allOf:
- $ref: '#/components/schemas/ChatSessionId'
nullable: true
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ChatTemplate'
type: array
description: Chat templates retrieved
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
tags:
- admin
post:
operationId: admin_create_chat_template
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChatTemplateRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ChatTemplate'
description: Chat template created
'400':
description: Bad request
'403':
description: Forbidden
'404':
description: Chat session not found
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/chat/templates/{template_id}:
patch:
operationId: admin_update_chat_template
parameters:
- description: Chat template ID
in: path
name: template_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateChatTemplate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ChatTemplate'
description: Chat template updated
'404':
description: Chat template not found
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector-catalog:
post:
operationId: admin_create_connector_catalog
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConnectorCatalogRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorCatalog'
description: ''
security:
- api_key: []
- session_token: []
summary: Create a new connector catalog entry
tags:
- admin
/admin/connector-catalog/auth-methods:
post:
operationId: admin_create_connector_auth_method
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConnectorAuthMethodRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorAuthMethod'
description: ''
security:
- api_key: []
- session_token: []
summary: Create a new connector auth method
tags:
- admin
/admin/connector-catalog/auth-methods/{id}:
patch:
operationId: admin_update_connector_auth_method
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorAuthMethodId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConnectorAuthMethodRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorAuthMethod'
description: ''
security:
- api_key: []
- session_token: []
summary: Update a connector auth method
tags:
- admin
/admin/connector-catalog/credential-fields:
post:
operationId: admin_create_connector_credential_field
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConnectorCredentialFieldRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorCredentialField'
description: ''
security:
- api_key: []
- session_token: []
summary: Create a new connector credential field
tags:
- admin
/admin/connector-catalog/credential-fields/batch:
post:
operationId: admin_batch_create_connector_credential_fields
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreateCredentialFieldsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ConnectorCredentialField'
type: array
description: ''
security:
- api_key: []
- session_token: []
summary: Batch create connector credential fields
tags:
- admin
/admin/connector-catalog/credential-fields/{id}:
delete:
operationId: admin_delete_connector_credential_field
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorCredentialFieldId'
responses:
'200':
description: Field deleted successfully
'404':
description: Field not found
security:
- api_key: []
- session_token: []
summary: Delete a connector credential field
tags:
- admin
patch:
operationId: admin_update_connector_credential_field
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorCredentialFieldId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConnectorCredentialFieldRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorCredentialField'
description: ''
security:
- api_key: []
- session_token: []
summary: Update a connector credential field
tags:
- admin
/admin/connector-catalog/nango-pending:
get:
operationId: admin_list_nango_pending
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/PendingNangoIntegration'
type: array
description: ''
security:
- api_key: []
- session_token: []
summary: List Nango integrations that are not yet in the connector catalog
tags:
- admin
/admin/connector-catalog/scopes:
get:
operationId: admin_list_connector_auth_method_scopes
parameters:
- in: query
name: connector_auth_method_id
required: true
schema:
$ref: '#/components/schemas/ConnectorAuthMethodId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListScopesResponse'
description: ''
security:
- api_key: []
- session_token: []
tags:
- admin
post:
operationId: admin_create_connector_auth_method_scope
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConnectorAuthMethodScopeRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorAuthMethodScope'
description: ''
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector-catalog/scopes/batch:
post:
operationId: admin_batch_create_connector_auth_method_scopes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreateScopesRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreateScopesResponse'
description: ''
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector-catalog/scopes/{id}:
delete:
operationId: admin_delete_connector_auth_method_scope
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorAuthMethodScopeId'
responses:
'200':
description: Scope deleted successfully
'404':
description: Scope not found
security:
- api_key: []
- session_token: []
tags:
- admin
patch:
operationId: admin_update_connector_auth_method_scope
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorAuthMethodScopeId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConnectorAuthMethodScope'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorAuthMethodScope'
description: ''
'404':
description: Scope not found
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector-catalog/{id}:
delete:
operationId: admin_delete_connector_catalog
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorCatalogId'
responses:
'200':
description: Catalog entry deleted successfully
'404':
description: Catalog entry not found
security:
- api_key: []
- session_token: []
tags:
- admin
patch:
operationId: admin_update_connector_catalog
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/ConnectorCatalogId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConnectorCatalogRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorCatalog'
description: ''
security:
- api_key: []
- session_token: []
summary: Update a connector catalog entry
tags:
- admin
/admin/connector-catalog/{slug}/logo:
put:
operationId: admin_upload_connector_logo
parameters:
- in: path
name: slug
required: true
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadConnectorLogoForm'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UploadConnectorLogoResponse'
description: Logo uploaded
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector/clone:
post:
operationId: admin_clone_connectors
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CloneConnectorsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CloneConnectorsResponse'
description: Connectors cloned successfully
'401':
description: Unauthorized
'404':
description: Source connector not found
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector/datahub-config:
post:
operationId: admin_set_connector_datahub_config
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetDatahubConfigRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Connector'
description: Datahub config updated
'401':
description: Unauthorized
'404':
description: Connector not found
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/connector/team/{team_id}:
get:
operationId: admin_list_team_connectors
parameters:
- description: Team ID
in: path
name: team_id
required: true
schema:
$ref: '#/components/schemas/TeamId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminListConnectorsResponse'
description: Connectors for team
'401':
description: Unauthorized
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/critical:
post:
operationId: admin_report_critical
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ReportCriticalRequest'
required: true
responses:
'200':
description: Critical error reported
'401':
description: Unauthorized
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/dataset/get_by_id:
get:
operationId: admin_dataset_get_by_id
parameters:
- description: ID of the dataset to retrieve
in: query
name: id
required: true
schema:
$ref: '#/components/schemas/DatasetId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminDatasetReturn'
description: Dataset retrieved successfully
'404':
description: Dataset not found
security:
- api_key: []
tags:
- admin
/admin/functional_tests/create:
post:
description: Creates a new functional test with optional model and prompt overrides.
operationId: admin_create_functional_test
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFunctionalTestRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FunctionalTest'
description: ''
'400':
description: Bad request
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: Create a new functional test
tags:
- admin
/admin/functional_tests/link:
post:
description: Links a chat session to a functional test with a specific sample name and initial results.
operationId: admin_link_chat_to_functional_test
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LinkChatToFunctionalTestRequest'
required: true
responses:
'200':
description: Successfully linked chat to functional test
'400':
description: Bad request
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: Link a chat session to a functional test
tags:
- admin
/admin/functional_tests/list:
get:
description: Gets all functional tests with their overrides and creation dates, ordered by most recent first.
operationId: admin_list_functional_tests
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/FunctionalTestListItem'
type: array
description: ''
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: List all functional tests
tags:
- admin
/admin/functional_tests/results:
get:
description: 'Gets all results and chat IDs for either a specific functional test or a specific sample name.
Must provide either functional_test_id or sample_name, but not both.'
operationId: admin_get_functional_test_results
parameters:
- in: query
name: functional_test_id
required: false
schema:
allOf:
- $ref: '#/components/schemas/FunctionalTestId'
nullable: true
- in: query
name: sample_name
required: false
schema:
nullable: true
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FunctionalTestResultsResponse'
description: ''
'400':
description: Bad request - must provide either functional_test_id or sample_name
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: Get results for a functional test or sample
tags:
- admin
/admin/functional_tests/system_prompt:
get:
description: Returns the current system prompt template used by the code agent.
operationId: admin_get_system_prompt
responses:
'200':
content:
text/plain:
schema:
type: string
description: System prompt content
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: Get the system prompt template
tags:
- admin
/admin/functional_tests/update_results:
put:
description: Updates the results for a specific chat session linked to a functional test.
operationId: admin_update_functional_test_results
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFunctionalTestResultsRequest'
required: true
responses:
'200':
description: Successfully updated functional test results
'400':
description: Bad request
'404':
description: Chat/functional test link not found
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
summary: Update results for a chat linked to a functional test
tags:
- admin
/admin/jobs/concurrency_limits:
get:
operationId: admin_get_job_concurrency_limits
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/JobConcurrencyLimits'
description: Current job concurrency limits
security:
- api_key: []
- session_token: []
tags:
- admin
put:
operationId: admin_update_job_concurrency_limits
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateJobConcurrencyLimits'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/JobConcurrencyLimits'
description: Updated job concurrency limits
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/jobs/delete:
post:
operationId: admin_jobs_delete
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminDeleteJobsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminDeleteJobsResponse'
description: Jobs deleted successfully
'400':
description: Invalid request
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/jobs/kill_by_user:
post:
operationId: admin_kill_jobs_by_user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KillByUserRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/KillByUserResponse'
description: Jobs killed successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/jobs/list:
get:
operationId: admin_jobs_list
parameters:
- in: query
name: offset
required: false
schema:
minimum: 0
type: integer
- in: query
name: limit
required: false
schema:
minimum: 0
type: integer
- in: query
name: status
required: false
schema:
allOf:
- $ref: '#/components/schemas/JobStatus'
nullable: true
- in: query
name: job_type
required: false
schema:
allOf:
- $ref: '#/components/schemas/JobType'
nullable: true
- in: query
name: user_id
required: false
schema:
allOf:
- $ref: '#/components/schemas/UserId'
nullable: true
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ListJobsResponse'
type: array
description: A list of all execution histories across all users
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/jobs/running_stats:
get:
operationId: admin_get_running_job_stats
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RunningJobStats'
description: Running job statistics by type and user
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/redis/flush:
post:
operationId: admin_redis_flush
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FlushResponse'
description: Redis flushed successfully
'500':
description: Failed to flush Redis
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/sandbox/create_job:
post:
operationId: admin_sandbox_create_job
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateJobSandboxRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateJobSandboxResponse'
description: ''
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/sandbox/list:
get:
operationId: admin_sandbox_list
parameters:
- in: query
name: limit
required: false
schema:
format: int64
nullable: true
type: integer
- in: query
name: offset
required: false
schema:
format: int64
nullable: true
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Sandbox'
type: array
description: ''
security:
- api_key: []
tags:
- admin
/admin/sandbox/{sandbox_id}/terminate:
post:
operationId: admin_sandbox_terminate
parameters:
- description: Sandbox ID
in: path
name: sandbox_id
required: true
schema:
$ref: '#/components/schemas/SandboxId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Sandbox'
description: ''
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/add_member:
post:
operationId: admin_team_add_member
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminAddMemberRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminAddMemberResponse'
description: Member added successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/cancel_subscription:
post:
operationId: admin_team_cancel_subscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CancelSubscriptionRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CancelSubscriptionResponse'
description: Subscription canceled successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/create_subscription:
post:
operationId: admin_team_create_subscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminCreateSubscriptionRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminCreateSubscriptionResponse'
description: Subscription created successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/expire_grants:
post:
operationId: admin_team_expire_grants
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExpireGrantsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ExpireGrantsResponse'
description: Grants expired successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/extend_trial:
post:
operationId: admin_team_extend_trial
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtendTrialRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ExtendTrialResponse'
description: Trial extended successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/get/{team_id}:
get:
operationId: admin_team_get
parameters:
- description: Team ID
in: path
name: team_id
required: true
schema:
$ref: '#/components/schemas/TeamId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TeamListResponse'
description: Team retrieved successfully
'404':
description: Team not found
'500':
description: Internal server error
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/grant_credits:
post:
operationId: admin_team_grant_credits
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GrantCreditsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GrantCreditsResponse'
description: Credits granted successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/list:
get:
description: 'Lists teams in the system along with their subscription information, credit grants, and member counts.
Supports optional pagination via limit, offset, and search query parameters.'
operationId: admin_team_list
parameters:
- in: query
name: limit
required: false
schema:
format: int64
nullable: true
type: integer
- in: query
name: offset
required: false
schema:
format: int64
nullable: true
type: integer
- in: query
name: search
required: false
schema:
nullable: true
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedTeamListResponse'
description: ''
security:
- api_key: []
- session_token: []
summary: Gets all the teams with their subscription status, grants, and member counts.
tags:
- admin
/admin/team/remove_member:
post:
operationId: admin_team_remove_member
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminRemoveMemberRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminRemoveMemberResponse'
description: Member removed successfully
security:
- api_key: []
- session_token: []
tags:
- admin
/admin/team/update_seats_override:
post:
operationId: admin_team_update_seats_override
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSeatsOverrideRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSeatsOverrideResponse'
description: Seats override updated successfully
security:
- api
# --- truncated at 32 KB (94 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/structify/refs/heads/main/openapi/structify-admin-api-openapi.yml