From 399ef6570698bfbd0d754294120cde5dc2a9d996 Mon Sep 17 00:00:00 2001 From: Zeal Caiden Date: Sun, 4 Oct 2026 15:15:35 -0700 Subject: [PATCH] 0.4.3: generated from the evening 2026-10-04 document Descriptions lead with credits, and period_resets_at is a string on every plan. fern/openapi.json is the document from basedanarki/arcmira master 697b2fbcd. Version 0.4.3. --- CHANGELOG.md | 4 ++++ VERSION | 2 +- fern/openapi.json | 23 ++++++++----------- reference.md | 2 +- src/arcmira/_package.py | 2 +- src/arcmira/core/client_wrapper.py | 2 +- src/arcmira/transcripts/client.py | 4 ++-- src/arcmira/transcripts/raw_client.py | 4 ++-- src/arcmira/types/me_response.py | 4 ++-- src/arcmira/types/me_response_usage.py | 6 ++--- src/arcmira/types/signup_verified_response.py | 2 +- src/arcmira/types/transcript_quote.py | 2 +- src/arcmira/types/transcript_response.py | 2 +- src/arcmira/types/transcript_search_chunk.py | 2 +- 14 files changed, 31 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a69c2..27a3c24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.4.3 + +Generated from the API document of 2026-10-04, evening, whose descriptions lead with credits. `MeResponse.period_resets_at` is a string on every plan. + ## 0.4.2 Generated from the v1 document of 2026-10-04, which prices every read in credits. `PremiumQuote` replaces the `TranscriptPurchaseQuote` type. diff --git a/VERSION b/VERSION index 2b7c5ae..17b2ccd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.2 +0.4.3 diff --git a/fern/openapi.json b/fern/openapi.json index 0e59269..f14bd44 100644 --- a/fern/openapi.json +++ b/fern/openapi.json @@ -983,7 +983,7 @@ }, "rows": { "type": "integer", - "description": "Rows the whole video uses, 75 rows per 15-minute block. A row is 4 credits, so Premium uses 300 credits per block." + "description": "Credits the whole video uses, in rows: 300 credits per 15-minute block (75 rows; a row is 4 credits)." } }, "required": [ @@ -1263,11 +1263,8 @@ "description": "The account email with the local part masked after its first character, e.g. z***@example.com. Null when the account has none." }, "period_resets_at": { - "type": [ - "string", - "null" - ], - "description": "ISO 8601 time the plan credits reset: 00:00 UTC on the first of next month. Null on the free plan, whose 1,000 credits a month reset on usage.credits.plan.resets_at." + "type": "string", + "description": "ISO 8601 time the plan credits reset: 00:00 UTC on the first of next month, on every plan." }, "tier": { "type": "string", @@ -1293,15 +1290,15 @@ "properties": { "rows_used": { "type": "integer", - "description": "Plan credits used this month, in rows: usage.credits.plan.used divided by 4, rounded up. A row is 4 credits." + "description": "Plan credits used this month, in rows (a row is 4 credits): usage.credits.plan.used divided by 4, rounded up." }, "rows_remaining": { "type": "integer", - "description": "Credits left from the plan, grants and top-ups, on-demand excluded, in rows: divided by 4, rounded up. A row is 4 credits." + "description": "Credits left from the plan, grants and top-ups, on-demand excluded, in rows (a row is 4 credits): divided by 4, rounded up." }, "monthly_rows": { "type": "integer", - "description": "The plan credits a month, in rows: usage.credits.plan.credits divided by 4 when the plan has a limit. A row is 4 credits." + "description": "Plan credits a month, in rows (a row is 4 credits): usage.credits.plan.credits divided by 4 when the plan has a limit." }, "current_spend_cents": { "type": "integer", @@ -1524,7 +1521,7 @@ }, "rows_allotted": { "type": "integer", - "description": "On a paid plan, its monthly allowance in rows; a row is 4 credits. On the free plan, the account's row allotment from before credits (1,000 for a new account). The free plan uses 1,000 credits a month, read from usage.credits on GET /v1/me." + "description": "Plan credits a month, in rows (a row is 4 credits), on a paid plan. On the free plan, the account's allotment from before credits (1,000 for a new account). The free plan has 1,000 credits a month; read the balance from usage.credits on GET /v1/me." }, "next": { "type": "string", @@ -3762,7 +3759,7 @@ }, "watch_url": { "type": "string", - "description": "Site-relative watch URL with the timestamp, e.g. /watch?v=...&t=4787." + "description": "Absolute watch URL on arcmira.com with the timestamp, e.g. https://arcmira.com/watch?v=...&t=4787." }, "cite_line": { "type": [ @@ -5907,7 +5904,7 @@ }, "rows_billed": { "type": "integer", - "description": "Rows this captions read used: 1 row per started 15 minutes, and a row is 4 credits. 0 on a repeat of the same video, quality, language, and range inside the 7 day dedupe window. Premium reads report 0, because the Premium transcript job carries their charge." + "description": "Credits this captions read used, in rows (a row is 4 credits): 4 credits per started 15 minutes. 0 on a repeat of the same video, quality, language, and range inside the 7 day dedupe window. Premium reads report 0, because the Premium transcript job carries their charge." }, "as_of": { "type": [ @@ -10791,7 +10788,7 @@ ], "operationId": "quote_transcription", "summary": "Quote a whole-video Premium transcript", - "description": "Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id.", + "description": "Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id.", "security": [ { "bearerAuth": [] diff --git a/reference.md b/reference.md index 3de0fea..15ad042 100644 --- a/reference.md +++ b/reference.md @@ -1373,7 +1373,7 @@ client.transcripts.get(
-Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. +Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id.
diff --git a/src/arcmira/_package.py b/src/arcmira/_package.py index 8278610..a774dfd 100644 --- a/src/arcmira/_package.py +++ b/src/arcmira/_package.py @@ -1,5 +1,5 @@ # Written by scripts/install-generated.py from VERSION. -__version__ = '0.4.2' +__version__ = '0.4.3' homepage = "https://arcmira.com" docs = "https://arcmira.com/docs" api_base = "https://api.arcmira.com/v1" diff --git a/src/arcmira/core/client_wrapper.py b/src/arcmira/core/client_wrapper.py index cc8ad8a..c01059a 100644 --- a/src/arcmira/core/client_wrapper.py +++ b/src/arcmira/core/client_wrapper.py @@ -33,7 +33,7 @@ def get_headers(self) -> typing.Dict[str, str]: import platform headers: typing.Dict[str, str] = { - "User-Agent": "arcmira/0.4.2", + "User-Agent": "arcmira/0.4.3", "X-Fern-Language": "Python", "X-Fern-Runtime": f"python/{platform.python_version()}", "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}", diff --git a/src/arcmira/transcripts/client.py b/src/arcmira/transcripts/client.py index 3ee874e..24defd7 100644 --- a/src/arcmira/transcripts/client.py +++ b/src/arcmira/transcripts/client.py @@ -195,7 +195,7 @@ def get( def quote(self, video_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> PremiumQuote: """ - Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. + Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. Parameters ---------- @@ -469,7 +469,7 @@ async def main() -> None: async def quote(self, video_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> PremiumQuote: """ - Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. + Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. Parameters ---------- diff --git a/src/arcmira/transcripts/raw_client.py b/src/arcmira/transcripts/raw_client.py index ade787e..3425117 100644 --- a/src/arcmira/transcripts/raw_client.py +++ b/src/arcmira/transcripts/raw_client.py @@ -396,7 +396,7 @@ def quote( self, video_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[PremiumQuote]: """ - Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. + Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. Parameters ---------- @@ -1002,7 +1002,7 @@ async def quote( self, video_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[PremiumQuote]: """ - Optional free quote: what a Premium read of this video would use right now, as rows and credits (a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. + Optional free quote: what a Premium read of this video would use right now, as credits (charge; quote.rows restates it in rows, and a row is 4 credits), where the credits would come from, and max_on_demand_cents, the on-demand budget the read would need beyond the plan's credits within the account limit. It does not reserve credits or budget and does not start a transcript. A video with no known duration, or one past the 12 hour cap, answers 400 invalid_query with param video_id. Parameters ---------- diff --git a/src/arcmira/types/me_response.py b/src/arcmira/types/me_response.py index c0677c2..054a27b 100644 --- a/src/arcmira/types/me_response.py +++ b/src/arcmira/types/me_response.py @@ -35,9 +35,9 @@ class MeResponse(UniversalBaseModel): The account email with the local part masked after its first character, e.g. z***@example.com. Null when the account has none. """ - period_resets_at: typing.Optional[str] = pydantic.Field(default=None) + period_resets_at: str = pydantic.Field() """ - ISO 8601 time the plan credits reset: 00:00 UTC on the first of next month. Null on the free plan, whose 1,000 credits a month reset on usage.credits.plan.resets_at. + ISO 8601 time the plan credits reset: 00:00 UTC on the first of next month, on every plan. """ tier: str = pydantic.Field() diff --git a/src/arcmira/types/me_response_usage.py b/src/arcmira/types/me_response_usage.py index 5af0757..0ad4235 100644 --- a/src/arcmira/types/me_response_usage.py +++ b/src/arcmira/types/me_response_usage.py @@ -10,17 +10,17 @@ class MeResponseUsage(UniversalBaseModel): rows_used: int = pydantic.Field() """ - Plan credits used this month, in rows: usage.credits.plan.used divided by 4, rounded up. A row is 4 credits. + Plan credits used this month, in rows (a row is 4 credits): usage.credits.plan.used divided by 4, rounded up. """ rows_remaining: int = pydantic.Field() """ - Credits left from the plan, grants and top-ups, on-demand excluded, in rows: divided by 4, rounded up. A row is 4 credits. + Credits left from the plan, grants and top-ups, on-demand excluded, in rows (a row is 4 credits): divided by 4, rounded up. """ monthly_rows: int = pydantic.Field() """ - The plan credits a month, in rows: usage.credits.plan.credits divided by 4 when the plan has a limit. A row is 4 credits. + Plan credits a month, in rows (a row is 4 credits): usage.credits.plan.credits divided by 4 when the plan has a limit. """ current_spend_cents: int = pydantic.Field() diff --git a/src/arcmira/types/signup_verified_response.py b/src/arcmira/types/signup_verified_response.py index 2c31bcb..6d7bb88 100644 --- a/src/arcmira/types/signup_verified_response.py +++ b/src/arcmira/types/signup_verified_response.py @@ -34,7 +34,7 @@ class SignupVerifiedResponse(UniversalBaseModel): rows_allotted: int = pydantic.Field() """ - On a paid plan, its monthly allowance in rows; a row is 4 credits. On the free plan, the account's row allotment from before credits (1,000 for a new account). The free plan uses 1,000 credits a month, read from usage.credits on GET /v1/me. + Plan credits a month, in rows (a row is 4 credits), on a paid plan. On the free plan, the account's allotment from before credits (1,000 for a new account). The free plan has 1,000 credits a month; read the balance from usage.credits on GET /v1/me. """ next: str = pydantic.Field() diff --git a/src/arcmira/types/transcript_quote.py b/src/arcmira/types/transcript_quote.py index f7d91b6..568aecc 100644 --- a/src/arcmira/types/transcript_quote.py +++ b/src/arcmira/types/transcript_quote.py @@ -14,7 +14,7 @@ class TranscriptQuote(UniversalBaseModel): rows: int = pydantic.Field() """ - Rows the whole video uses, 75 rows per 15-minute block. A row is 4 credits, so Premium uses 300 credits per block. + Credits the whole video uses, in rows: 300 credits per 15-minute block (75 rows; a row is 4 credits). """ if IS_PYDANTIC_V2: diff --git a/src/arcmira/types/transcript_response.py b/src/arcmira/types/transcript_response.py index d47880e..fd47e5a 100644 --- a/src/arcmira/types/transcript_response.py +++ b/src/arcmira/types/transcript_response.py @@ -65,7 +65,7 @@ class TranscriptResponse(UniversalBaseModel): rows_billed: int = pydantic.Field() """ - Rows this captions read used: 1 row per started 15 minutes, and a row is 4 credits. 0 on a repeat of the same video, quality, language, and range inside the 7 day dedupe window. Premium reads report 0, because the Premium transcript job carries their charge. + Credits this captions read used, in rows (a row is 4 credits): 4 credits per started 15 minutes. 0 on a repeat of the same video, quality, language, and range inside the 7 day dedupe window. Premium reads report 0, because the Premium transcript job carries their charge. """ as_of: typing.Optional[str] = pydantic.Field(default=None) diff --git a/src/arcmira/types/transcript_search_chunk.py b/src/arcmira/types/transcript_search_chunk.py index ea8e1b0..b180c6d 100644 --- a/src/arcmira/types/transcript_search_chunk.py +++ b/src/arcmira/types/transcript_search_chunk.py @@ -70,7 +70,7 @@ class TranscriptSearchChunk(UniversalBaseModel): watch_url: str = pydantic.Field() """ - Site-relative watch URL with the timestamp, e.g. /watch?v=...&t=4787. + Absolute watch URL on arcmira.com with the timestamp, e.g. https://arcmira.com/watch?v=...&t=4787. """ cite_line: typing.Optional[str] = pydantic.Field(default=None)