Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .spec-sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0b38b5c071f4b97f634faed780611d52969ea716
cddf1ca71c61a62e9e429206b74a6d064222b4ed
2 changes: 1 addition & 1 deletion src/onepin/.fern/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
}
]
},
"originGitCommit": "41215c0e6ac788a5ef9da91a94fdcaa669837c82",
"originGitCommit": "a3ee57d10e66cc74651c81add046845159caf420",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
"ciProvider": "github"
Expand Down
9 changes: 9 additions & 0 deletions src/onepin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
ApiResponseWorkflowOut,
ApiResponseWorkflowRunDetailOut,
ApiResponseWorkflowRunOut,
ApiResponseWorkflowRunOutputsOut,
ApiResponseWorkflowRunOverviewOut,
ApiResponseWorkflowRunStatusOut,
ApiResponseWorkspaceInviteOut,
Expand Down Expand Up @@ -170,6 +171,7 @@
WorkflowRunDetailOut,
WorkflowRunListItem,
WorkflowRunOut,
WorkflowRunOutputsOut,
WorkflowRunOverviewAudioLanguageOut,
WorkflowRunOverviewCapabilitiesOut,
WorkflowRunOverviewFutureLinksOut,
Expand All @@ -185,6 +187,7 @@
WorkflowRunOverviewValidatorOut,
WorkflowRunOverviewValidatorOutStatus,
WorkflowRunOverviewWorkflowOut,
WorkflowRunSinkOutputOut,
WorkflowRunStartIn,
WorkflowRunStatusOut,
WorkflowRunStepOut,
Expand Down Expand Up @@ -290,6 +293,7 @@
"ApiResponseWorkflowOut": ".types",
"ApiResponseWorkflowRunDetailOut": ".types",
"ApiResponseWorkflowRunOut": ".types",
"ApiResponseWorkflowRunOutputsOut": ".types",
"ApiResponseWorkflowRunOverviewOut": ".types",
"ApiResponseWorkflowRunStatusOut": ".types",
"ApiResponseWorkspaceInviteOut": ".types",
Expand Down Expand Up @@ -443,6 +447,7 @@
"WorkflowRunDetailOut": ".types",
"WorkflowRunListItem": ".types",
"WorkflowRunOut": ".types",
"WorkflowRunOutputsOut": ".types",
"WorkflowRunOverviewAudioLanguageOut": ".types",
"WorkflowRunOverviewCapabilitiesOut": ".types",
"WorkflowRunOverviewFutureLinksOut": ".types",
Expand All @@ -458,6 +463,7 @@
"WorkflowRunOverviewValidatorOut": ".types",
"WorkflowRunOverviewValidatorOutStatus": ".types",
"WorkflowRunOverviewWorkflowOut": ".types",
"WorkflowRunSinkOutputOut": ".types",
"WorkflowRunStartIn": ".types",
"WorkflowRunStatusOut": ".types",
"WorkflowRunStepOut": ".types",
Expand Down Expand Up @@ -553,6 +559,7 @@ def __dir__():
"ApiResponseWorkflowOut",
"ApiResponseWorkflowRunDetailOut",
"ApiResponseWorkflowRunOut",
"ApiResponseWorkflowRunOutputsOut",
"ApiResponseWorkflowRunOverviewOut",
"ApiResponseWorkflowRunStatusOut",
"ApiResponseWorkspaceInviteOut",
Expand Down Expand Up @@ -706,6 +713,7 @@ def __dir__():
"WorkflowRunDetailOut",
"WorkflowRunListItem",
"WorkflowRunOut",
"WorkflowRunOutputsOut",
"WorkflowRunOverviewAudioLanguageOut",
"WorkflowRunOverviewCapabilitiesOut",
"WorkflowRunOverviewFutureLinksOut",
Expand All @@ -721,6 +729,7 @@ def __dir__():
"WorkflowRunOverviewValidatorOut",
"WorkflowRunOverviewValidatorOutStatus",
"WorkflowRunOverviewWorkflowOut",
"WorkflowRunSinkOutputOut",
"WorkflowRunStartIn",
"WorkflowRunStatusOut",
"WorkflowRunStepOut",
Expand Down
2 changes: 1 addition & 1 deletion src/onepin/core/client_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform

headers: typing.Dict[str, str] = {
"User-Agent": "onepin/0.9.1",
"User-Agent": "onepin/0.11.1",
"X-Fern-Language": "Python",
"X-Fern-Runtime": f"python/{platform.python_version()}",
"X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
Expand Down
12 changes: 6 additions & 6 deletions src/onepin/dictionary/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
from ..types.api_response_pronunciation_suggestion import ApiResponsePronunciationSuggestion
from ..types.dictionary_method import DictionaryMethod
from .raw_client import AsyncRawDictionaryClient, RawDictionaryClient
from .types.list_dictionary_entries_api_v1dictionary_get_request_language import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_language import (
ListDictionaryEntriesApiV1DictionaryGetRequestLanguage,
)
from .types.list_dictionary_entries_api_v1dictionary_get_request_order import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_order import (
ListDictionaryEntriesApiV1DictionaryGetRequestOrder,
)
from .types.list_dictionary_entries_api_v1dictionary_get_request_sort import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_sort import (
ListDictionaryEntriesApiV1DictionaryGetRequestSort,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_language_item import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_language_item import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestLanguageItem,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_order import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_order import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestOrder,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_sort import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_sort import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestSort,
)

Expand Down
12 changes: 6 additions & 6 deletions src/onepin/dictionary/raw_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@
from ..types.api_response_list_dictionary_language_out import ApiResponseListDictionaryLanguageOut
from ..types.api_response_pronunciation_suggestion import ApiResponsePronunciationSuggestion
from ..types.dictionary_method import DictionaryMethod
from .types.list_dictionary_entries_api_v1dictionary_get_request_language import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_language import (
ListDictionaryEntriesApiV1DictionaryGetRequestLanguage,
)
from .types.list_dictionary_entries_api_v1dictionary_get_request_order import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_order import (
ListDictionaryEntriesApiV1DictionaryGetRequestOrder,
)
from .types.list_dictionary_entries_api_v1dictionary_get_request_sort import (
from .types.list_dictionary_entries_api_v1_dictionary_get_request_sort import (
ListDictionaryEntriesApiV1DictionaryGetRequestSort,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_language_item import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_language_item import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestLanguageItem,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_order import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_order import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestOrder,
)
from .types.search_dictionary_entries_api_v1dictionary_search_get_request_sort import (
from .types.search_dictionary_entries_api_v1_dictionary_search_get_request_sort import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestSort,
)
from pydantic import ValidationError
Expand Down
24 changes: 12 additions & 12 deletions src/onepin/dictionary/types/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,31 @@
from importlib import import_module

if typing.TYPE_CHECKING:
from .list_dictionary_entries_api_v1dictionary_get_request_language import (
from .list_dictionary_entries_api_v1_dictionary_get_request_language import (
ListDictionaryEntriesApiV1DictionaryGetRequestLanguage,
)
from .list_dictionary_entries_api_v1dictionary_get_request_order import (
from .list_dictionary_entries_api_v1_dictionary_get_request_order import (
ListDictionaryEntriesApiV1DictionaryGetRequestOrder,
)
from .list_dictionary_entries_api_v1dictionary_get_request_sort import (
from .list_dictionary_entries_api_v1_dictionary_get_request_sort import (
ListDictionaryEntriesApiV1DictionaryGetRequestSort,
)
from .search_dictionary_entries_api_v1dictionary_search_get_request_language_item import (
from .search_dictionary_entries_api_v1_dictionary_search_get_request_language_item import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestLanguageItem,
)
from .search_dictionary_entries_api_v1dictionary_search_get_request_order import (
from .search_dictionary_entries_api_v1_dictionary_search_get_request_order import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestOrder,
)
from .search_dictionary_entries_api_v1dictionary_search_get_request_sort import (
from .search_dictionary_entries_api_v1_dictionary_search_get_request_sort import (
SearchDictionaryEntriesApiV1DictionarySearchGetRequestSort,
)
_dynamic_imports: typing.Dict[str, str] = {
"ListDictionaryEntriesApiV1DictionaryGetRequestLanguage": ".list_dictionary_entries_api_v1dictionary_get_request_language",
"ListDictionaryEntriesApiV1DictionaryGetRequestOrder": ".list_dictionary_entries_api_v1dictionary_get_request_order",
"ListDictionaryEntriesApiV1DictionaryGetRequestSort": ".list_dictionary_entries_api_v1dictionary_get_request_sort",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestLanguageItem": ".search_dictionary_entries_api_v1dictionary_search_get_request_language_item",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestOrder": ".search_dictionary_entries_api_v1dictionary_search_get_request_order",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestSort": ".search_dictionary_entries_api_v1dictionary_search_get_request_sort",
"ListDictionaryEntriesApiV1DictionaryGetRequestLanguage": ".list_dictionary_entries_api_v1_dictionary_get_request_language",
"ListDictionaryEntriesApiV1DictionaryGetRequestOrder": ".list_dictionary_entries_api_v1_dictionary_get_request_order",
"ListDictionaryEntriesApiV1DictionaryGetRequestSort": ".list_dictionary_entries_api_v1_dictionary_get_request_sort",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestLanguageItem": ".search_dictionary_entries_api_v1_dictionary_search_get_request_language_item",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestOrder": ".search_dictionary_entries_api_v1_dictionary_search_get_request_order",
"SearchDictionaryEntriesApiV1DictionarySearchGetRequestSort": ".search_dictionary_entries_api_v1_dictionary_search_get_request_sort",
}


Expand Down
111 changes: 103 additions & 8 deletions src/onepin/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -6894,10 +6894,8 @@ values (valid for 15 minutes) so callers can stream audio directly without
a separate download step.

`node_display_name` is resolved from the run's definition snapshot, so it
reflects the name the node had when the run executed. When multiple language
branches reach one output node, repeated sink steps receive locale suffixes
based on the language introduced by each iteration. Other retried nodes keep
their snapshot display name and incrementing `iteration` value.
reflects the name the node had when the run executed. Repeated executions of
the same node share that name and are distinguished by `iteration`.

For a higher-level view with aggregated metrics (pass rates, audio duration
by language), use `GET /runs/{run_id}/overview`. For paginated, grouped
Expand Down Expand Up @@ -6975,6 +6973,106 @@ client.workflows.get_run_steps(
</dl>


</dd>
</dl>
</details>

<details><summary><code>client.workflows.<a href="src/onepin/workflows/client.py">get_run_outputs</a>(...) -> ApiResponseWorkflowRunOutputsOut</code></summary>
<dl>
<dd>

#### 📝 Description

<dl>
<dd>

<dl>
<dd>

Fetch one logical output per sink node in a workflow run.

Every sink from the run's definition snapshot is returned in graph order,
including incomplete sinks with empty lines. Completed iterations are
unioned per sink with the latest completed value winning for duplicate
`line_id` values. Status reflects the latest attempt, so earlier completed
lines remain visible when a later attempt fails. Audio playback URLs are
short-lived and hydrated only on copied result lines.

Each sink's union is capped server-side; `truncated: true` on an output
signals that its `lines` are an incomplete prefix of the logical result.
</dd>
</dl>
</dd>
</dl>

#### 🔌 Usage

<dl>
<dd>

<dl>
<dd>

```python
from onepin import OnePinClient
from onepin.environment import OnePinClientEnvironment

client = OnePinClient(
token="<token>",
environment=OnePinClientEnvironment.PROD,
)

client.workflows.get_run_outputs(
workflow_id="workflow_id",
run_id="run_id",
)

```
</dd>
</dl>
</dd>
</dl>

#### ⚙️ Parameters

<dl>
<dd>

<dl>
<dd>

**workflow_id:** `str`

</dd>
</dl>

<dl>
<dd>

**run_id:** `str`

</dd>
</dl>

<dl>
<dd>

**workspace_id:** `typing.Optional[str]`

</dd>
</dl>

<dl>
<dd>

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

</dd>
</dl>
</dd>
</dl>


</dd>
</dl>
</details>
Expand All @@ -6998,16 +7096,13 @@ pass rates) grouped by display section, along with per-language audio
breakdowns and per-validator scoring summaries. Also includes a
`workflow_snapshot` with the graph definition and per-node completion states.

Repeated states for one shared output node use the same locale suffixes as
`GET /runs/{run_id}/steps`, based on the language introduced by each sink
iteration.

This endpoint is best suited for a summary/results view after a run
completes. It differs from the other run sub-resources as follows:

- `GET /runs/{run_id}` — full run record including the raw definition snapshot.
- `GET /runs/{run_id}/status` — volatile status fields only; for polling.
- `GET /runs/{run_id}/steps` — flat per-node step log with audio playback URLs.
- `GET /runs/{run_id}/outputs` — one logical result per snapshot sink node.
- `GET /runs/{run_id}/data` — paginated script+audio rows for a data table.
- `GET /runs/{run_id}/overview` (this endpoint) — pre-aggregated metrics and
node state map for a dashboard/overview panel.
Expand Down
Loading