DoculaDevelopersDezvoltatori
API 0.8.0 · BuildVersiune produs 0.33.0
Documentation navigationNavigare documentație
GET/api/v1/releases/{releaseId}

Read an immutable release manifestCitește manifestul unei versiuni imuabile

Read an immutable release manifest. Reads the identified resource without mutation. Required inputs: releaseId. HTTP success: 200; documented failures: 401, 403, 404, 405, 500, 503. Follow the canonical configuration dependency order and retain every returned identity and hash.Citește manifestul unei versiuni imuabile. Citește resursa identificată fără modificare. Intrări obligatorii: releaseId. Succes HTTP: 200; erori documentate: 401, 403, 404, 405, 500, 503. Respectă ordinea canonică a dependențelor de configurare și păstrează fiecare identitate și hash returnat.

Roles: administrator, engineer, operator, auditorRoluri: administrator (administrator), engineer (inginer), operator (operator), auditor (auditor)Host-local session requiredEste necesară sesiunea hostului

A session with must_change_password=true is forbidden regardless of role; only session read, password change, and logout remain authorized.O sesiune cu must_change_password=true este interzisă indiferent de rol; rămân autorizate doar citirea sesiunii, schimbarea parolei și deconectarea.

Required headers and parametersHeadere și parametri obligatorii

releaseIdpath · requiredobligatoriu
Immutable published release UUID.UUID-ul release-ului publicat imuabil.
11111111-1111-4111-8111-000000000001
Complete parameter schemaSchema completă a parametrului
{
  "type": "string",
  "format": "uuid"
}

Lifecycle and conventionsCiclu și convenții

Open the related API conventionDeschide convenția API asociată

Request examplesExemple de cerere

Synthetic curl · copy onlycurl sintetic · numai pentru copiere
curl --request GET "$DOCULA_URL/api/v1/releases/$RELEASE_ID" \
  --cookie "$COOKIE_JAR"

No request body applies. Use the documented method, path, headers, and parameters.Nu se aplică un body al cererii. Folosește metoda, calea, headerele și parametrii documentați.

Responses and failuresRăspunsuri și erori

200An immutable exact release manifest.Manifestul exact al unui release imuabil.

Structured response bodyBody structurat al răspunsului

application/json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "$ref": "#/components/schemas/Release",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "processing_kind",
    "name",
    "description",
    "contract_version_id",
    "contract_hash",
    "transform_version_id",
    "transform_hash",
    "output_hash",
    "manifest",
    "content_hash",
    "created_by",
    "correlation_id",
    "published_at"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "processing_kind": {
      "type": "string",
      "enum": [
        "transformation",
        "document_generation"
      ]
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "ingestion_model_version_id": {
      "type": "string",
      "format": "uuid"
    },
    "ingestion_model_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "node_address": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?::[a-z0-9]+(?:-[a-z0-9]+)*){1,15}$",
      "maxLength": 1024
    },
    "input_mode": {
      "type": "string",
      "enum": [
        "submission",
        "parent_output"
      ]
    },
    "producer_node_address": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?::[a-z0-9]+(?:-[a-z0-9]+)*){1,15}$",
      "maxLength": 1024
    },
    "producer_release_id": {
      "type": "string",
      "format": "uuid"
    },
    "producer_release_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "validation_input_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "contract_version_id": {
      "type": "string",
      "format": "uuid"
    },
    "contract_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "transform_version_id": {
      "type": "string",
      "format": "uuid"
    },
    "transform_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "template_version_id": {
      "type": "string",
      "format": "uuid"
    },
    "template_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "validation_case_id": {
      "type": "string",
      "format": "uuid"
    },
    "case_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "output_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "bindings_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "manifest": {
      "type": "string",
      "minLength": 1
    },
    "content_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "created_by": {
      "type": "string",
      "format": "uuid"
    },
    "correlation_id": {
      "type": "string",
      "minLength": 1
    },
    "published_at": {
      "type": "string",
      "format": "date-time"
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "processing_kind": {
            "const": "document_generation"
          }
        },
        "required": [
          "processing_kind"
        ]
      },
      "then": {
        "required": [
          "template_version_id",
          "template_hash",
          "bindings_hash"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "processing_kind": {
            "const": "transformation"
          }
        },
        "required": [
          "processing_kind"
        ]
      },
      "then": {
        "not": {
          "anyOf": [
            {
              "required": [
                "template_version_id"
              ]
            },
            {
              "required": [
                "template_hash"
              ]
            },
            {
              "required": [
                "bindings_hash"
              ]
            }
          ]
        }
      }
    },
    {
      "oneOf": [
        {
          "required": [
            "validation_case_id",
            "case_hash"
          ],
          "not": {
            "required": [
              "node_address"
            ]
          }
        },
        {
          "required": [
            "ingestion_model_version_id",
            "ingestion_model_hash",
            "node_address",
            "input_mode",
            "validation_input_hash",
            "validation_case_id",
            "case_hash"
          ],
          "properties": {
            "input_mode": {
              "const": "submission"
            }
          }
        },
        {
          "required": [
            "ingestion_model_version_id",
            "ingestion_model_hash",
            "node_address",
            "input_mode",
            "producer_node_address",
            "producer_release_id",
            "producer_release_hash",
            "validation_input_hash"
          ],
          "properties": {
            "input_mode": {
              "const": "parent_output"
            }
          },
          "not": {
            "anyOf": [
              {
                "required": [
                  "validation_case_id"
                ]
              },
              {
                "required": [
                  "case_hash"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}
Synthetic ReleaseOK responseExemplu sintetic HTTP 200
{
  "id": "11111111-1111-4111-8111-000000000001",
  "processing_kind": "transformation",
  "name": "synthetic-example",
  "description": "synthetic-example",
  "contract_version_id": "11111111-1111-4111-8111-000000000001",
  "contract_hash": "0000000000000000000000000000000000000000000000000000000000000000",
  "transform_version_id": "11111111-1111-4111-8111-000000000001",
  "transform_hash": "0000000000000000000000000000000000000000000000000000000000000000",
  "output_hash": "0000000000000000000000000000000000000000000000000000000000000000",
  "manifest": "synthetic-example",
  "content_hash": "0000000000000000000000000000000000000000000000000000000000000000",
  "created_by": "11111111-1111-4111-8111-000000000001",
  "correlation_id": "11111111-1111-4111-8111-000000000001",
  "published_at": "2026-08-01T10:00:00Z",
  "validation_case_id": "11111111-1111-4111-8111-000000000001",
  "case_hash": "0000000000000000000000000000000000000000000000000000000000000000"
}
401A valid server-side session is required.Este necesară o sesiune validă pe server.

Structured response bodyBody structurat al răspunsului

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 401
        },
        "code": {
          "const": "authentication_required"
        }
      }
    }
  ]
}
Synthetic AuthenticationRequired responseExemplu sintetic HTTP 401
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 401,
  "code": "authentication_required",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}
403The authenticated identity lacks the administrator permission.Identitatea autentificată nu are permisiunea de administrator.

Structured response bodyBody structurat al răspunsului

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 403
        },
        "code": {
          "const": "forbidden"
        }
      }
    }
  ]
}
Synthetic Forbidden responseExemplu sintetic HTTP 403
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 403,
  "code": "forbidden",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}
404The API or health path is unknown.Calea API sau de health este necunoscută.

Structured response bodyBody structurat al răspunsului

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 404
        },
        "code": {
          "const": "not_found"
        }
      }
    }
  ]
}
Synthetic NotFound responseExemplu sintetic HTTP 404
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 404,
  "code": "not_found",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}
405The method is not supported by this path.Metoda nu este acceptată de această cale.

Structured response bodyBody structurat al răspunsului

Response headersHeaderele răspunsului

AllowThe exact method or method set supported by this path.Metoda sau setul exact de metode acceptate de această cale.

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 405
        },
        "code": {
          "const": "method_not_allowed"
        }
      }
    }
  ]
}
Synthetic MethodNotAllowed responseExemplu sintetic HTTP 405
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 405,
  "code": "method_not_allowed",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}
500An internal handler failure occurred.A apărut o eroare internă în handler.

Structured response bodyBody structurat al răspunsului

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 500
        },
        "code": {
          "const": "internal_error"
        }
      }
    }
  ]
}
Synthetic InternalError responseExemplu sintetic HTTP 500
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 500,
  "code": "internal_error",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}
503A required dependency is unavailable.O dependență obligatorie este indisponibilă.

Structured response bodyBody structurat al răspunsului

application/problem+json

Structured response bodyBody structurat al răspunsului

Complete response schemaSchema completă a răspunsului
{
  "allOf": [
    {
      "$ref": "#/components/schemas/Problem",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "title",
        "status",
        "code",
        "detail",
        "correlation_id"
      ],
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^/problems/[a-z_]+$"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "type": "integer",
          "minimum": 400,
          "maximum": 599
        },
        "code": {
          "type": "string",
          "enum": [
            "internal_error",
            "dependency_unavailable",
            "invalid_credentials",
            "origin_rejected",
            "validation_failed",
            "rate_limited",
            "authentication_required",
            "csrf_rejected",
            "forbidden",
            "conflict",
            "not_found",
            "method_not_allowed",
            "unsupported_media_type",
            "content_unavailable",
            "precondition_required",
            "precondition_failed"
          ]
        },
        "detail": {
          "type": "string",
          "minLength": 1
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1
        },
        "dependencies": {
          "type": "array",
          "maxItems": 3,
          "items": {
            "$ref": "#/components/schemas/PublicDependency",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "status"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "postgresql",
                  "nats",
                  "s3",
                  "outbox"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "ready",
                  "unavailable"
                ]
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "const": 503
        },
        "code": {
          "const": "dependency_unavailable"
        }
      }
    }
  ]
}
Synthetic DependencyUnavailable responseExemplu sintetic HTTP 503
{
  "type": "/problems/synthetic_example",
  "title": "synthetic-example",
  "status": 503,
  "code": "dependency_unavailable",
  "detail": "synthetic-example",
  "correlation_id": "11111111-1111-4111-8111-000000000001"
}

Frontend capabilityCapabilitate frontend

Owner: business-ui · /app/configuration/releasesResponsabil: business-ui · /app/configuration/releases
PlannedPlanificatNoNuImplementedImplementatYesDaAcceptedAcceptatNoNu

Release workflows are served by the React configuration pages.Operația este folosită de aplicația React de pe ruta indicată.

Guided courseCurs ghidat