import json
import os
from parable_types_web_api import ArtifactPublicationSelection
from parable_web_api_sdk import ClientConfig, WebApiSDK
sdk = WebApiSDK(
ClientConfig(
base_url=os.environ["PARABLE_API_URL"],
auth_token=os.environ["PARABLE_API_TOKEN"],
default_headers={"X-Tenant": os.environ["PARABLE_WORKSPACE"]},
)
)
input_data = ArtifactPublicationSelection.model_validate(
json.loads("{\"namespaceId\":\"550e8400-e29b-41d4-a716-446655440000\",\"revisionId\":\"550e8400-e29b-41d4-a716-446655440000\"}"),
)
result = sdk.artifacts.artifact_publication_receipt(input_data)sdk, err := webapisdk.New(webapisdk.SDKConfig{
BaseURL: os.Getenv("PARABLE_API_URL"),
Auth: &webapisdk.AuthConfig{Token: os.Getenv("PARABLE_API_TOKEN")},
RequestInterceptor: func(ctx context.Context, req *http.Request) error {
req.Header.Set("X-Tenant", os.Getenv("PARABLE_WORKSPACE"))
return nil
},
})
if err != nil {
return err
}
var input webapitypes.ArtifactPublicationSelection
if err := json.Unmarshal([]byte(`{"namespaceId":"550e8400-e29b-41d4-a716-446655440000","revisionId":"550e8400-e29b-41d4-a716-446655440000"}`), &input); err != nil {
return err
}
result, err := sdk.ArtifactsNamespace.ArtifactPublicationReceipt(ctx, input){
"data": {
"namespaceId": "<string>",
"namespaceSlug": "<string>",
"revisionId": "<string>",
"state": "STAGING",
"tables": [
{
"declaration": {
"inputFormat": "CSV",
"inputSha256": "<string>",
"name": "<string>",
"rowCount": 0,
"sizeBytes": 4503599627370495
},
"reused": true,
"storageVerified": true,
"tableId": "<string>",
"analysisWork": {
"artifactId": "<string>",
"state": "PENDING",
"workId": "<string>",
"errorCode": "INVALID_SOURCE",
"errorMessage": "<string>",
"tapId": "<string>"
},
"ingestWork": {
"artifactId": "<string>",
"state": "PENDING",
"workId": "<string>",
"errorCode": "INVALID_SOURCE",
"errorMessage": "<string>",
"tapId": "<string>"
},
"outputSchema": {}
}
],
"activeRevisionId": "<string>",
"expectedBaseRevisionId": "<string>",
"failureCode": "<string>",
"previousRevisionId": "<string>"
},
"meta": {
"requestId": "<string>",
"totalCount": 123
},
"links": {
"first": "<string>",
"last": "<string>",
"next": "<string>",
"prev": "<string>"
}
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}Read publication progress
Returns the declared inventory and persisted processing results for an exact revision in the selected Workspace, including the schema analysis derived for each table, partial failures and reused tables. Does not read file bytes or run queries. A removed revision or deleted namespace is not found.
import json
import os
from parable_types_web_api import ArtifactPublicationSelection
from parable_web_api_sdk import ClientConfig, WebApiSDK
sdk = WebApiSDK(
ClientConfig(
base_url=os.environ["PARABLE_API_URL"],
auth_token=os.environ["PARABLE_API_TOKEN"],
default_headers={"X-Tenant": os.environ["PARABLE_WORKSPACE"]},
)
)
input_data = ArtifactPublicationSelection.model_validate(
json.loads("{\"namespaceId\":\"550e8400-e29b-41d4-a716-446655440000\",\"revisionId\":\"550e8400-e29b-41d4-a716-446655440000\"}"),
)
result = sdk.artifacts.artifact_publication_receipt(input_data)sdk, err := webapisdk.New(webapisdk.SDKConfig{
BaseURL: os.Getenv("PARABLE_API_URL"),
Auth: &webapisdk.AuthConfig{Token: os.Getenv("PARABLE_API_TOKEN")},
RequestInterceptor: func(ctx context.Context, req *http.Request) error {
req.Header.Set("X-Tenant", os.Getenv("PARABLE_WORKSPACE"))
return nil
},
})
if err != nil {
return err
}
var input webapitypes.ArtifactPublicationSelection
if err := json.Unmarshal([]byte(`{"namespaceId":"550e8400-e29b-41d4-a716-446655440000","revisionId":"550e8400-e29b-41d4-a716-446655440000"}`), &input); err != nil {
return err
}
result, err := sdk.ArtifactsNamespace.ArtifactPublicationReceipt(ctx, input){
"data": {
"namespaceId": "<string>",
"namespaceSlug": "<string>",
"revisionId": "<string>",
"state": "STAGING",
"tables": [
{
"declaration": {
"inputFormat": "CSV",
"inputSha256": "<string>",
"name": "<string>",
"rowCount": 0,
"sizeBytes": 4503599627370495
},
"reused": true,
"storageVerified": true,
"tableId": "<string>",
"analysisWork": {
"artifactId": "<string>",
"state": "PENDING",
"workId": "<string>",
"errorCode": "INVALID_SOURCE",
"errorMessage": "<string>",
"tapId": "<string>"
},
"ingestWork": {
"artifactId": "<string>",
"state": "PENDING",
"workId": "<string>",
"errorCode": "INVALID_SOURCE",
"errorMessage": "<string>",
"tapId": "<string>"
},
"outputSchema": {}
}
],
"activeRevisionId": "<string>",
"expectedBaseRevisionId": "<string>",
"failureCode": "<string>",
"previousRevisionId": "<string>"
},
"meta": {
"requestId": "<string>",
"totalCount": 123
},
"links": {
"first": "<string>",
"last": "<string>",
"next": "<string>",
"prev": "<string>"
}
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}{
"detail": "<string>",
"status": 400,
"title": "Bad Request",
"type": "about:blank",
"code": "WA-VL-001",
"details": "<unknown>",
"errors": "<unknown>",
"requestId": "<string>"
}Access
This operation needs a Parable token. An MCP token cannot call it. See Authentication for the kinds of token. Your roles must granttenant.artifacts.view.Authorizations
A personal access token, which starts with pat_. A Parable token can call each operation that the roles of its owner allow. An MCP token can call only the read operations that are open to agents. A SQL token does not work on this API.
Headers
Workspace slug. Overrides subdomain-based workspace resolution when provided.
"acme"
Optional request correlation ID echoed back in the response.
"550e8400-e29b-41d4-a716-446655440000"
Body
UUID v4 with automatic base62 encoding for client-facing APIs
^([0-9A-Za-z]{1,22}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$UUID v4 with automatic base62 encoding for client-facing APIs
^([0-9A-Za-z]{1,22}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$