mirror of
https://github.com/storytold/artcraft.git
synced 2026-10-23 10:09:29 -04:00
Compare commits
58
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc32d7c2ee | ||
|
|
bf0703f0c1 | ||
|
|
c7943bce59 | ||
|
|
c5f62daa2b | ||
|
|
7122e4507f | ||
|
|
238cb10499 | ||
|
|
1ebb124f05 | ||
|
|
e7bb263755 | ||
|
|
bbfea2ae96 | ||
|
|
3bc55c761c | ||
|
|
8348a91693 | ||
|
|
d1adc0b179 | ||
|
|
c0ac3cbc9c | ||
|
|
0a13d36070 | ||
|
|
8662e79824 | ||
|
|
dc30cf9669 | ||
|
|
b09a0fd854 | ||
|
|
400bccc155 | ||
|
|
11011dacaf | ||
|
|
2f73e861d1 | ||
|
|
0151a2e28d | ||
|
|
12d3f82fe2 | ||
|
|
4489c90125 | ||
|
|
fd54477f73 | ||
|
|
c093603b3d | ||
|
|
a9fb97d720 | ||
|
|
3d12be2469 | ||
|
|
e9938f6c93 | ||
|
|
7e2d7048b1 | ||
|
|
0c2b800494 | ||
|
|
a2a9b3b7de | ||
|
|
67df86e54e | ||
|
|
dbe42447af | ||
|
|
37667be20c | ||
|
|
b4d68d73ff | ||
|
|
65f3a0e2d0 | ||
|
|
e71c006a63 | ||
|
|
5224da1968 | ||
|
|
c3dfbb1698 | ||
|
|
48d69449c7 | ||
|
|
20d7e3bf31 | ||
|
|
505766b237 | ||
|
|
d462f65891 | ||
|
|
827bbc613f | ||
|
|
2ba11c9b3d | ||
|
|
824d1f22ab | ||
|
|
a3c03e3d99 | ||
|
|
29ef6daeed | ||
|
|
602d7d33a7 | ||
|
|
7ceb002fd3 | ||
|
|
ed1ce11dc0 | ||
|
|
527917c45c | ||
|
|
0274450a2b | ||
|
|
5e150db37e | ||
|
|
68f8a339af | ||
|
|
338b0b6313 | ||
|
|
4e752d7a9e | ||
|
|
32e01a415b |
@@ -0,0 +1,47 @@
|
||||
# API Conventions
|
||||
|
||||
## HTTP Handlers (Actix-Web)
|
||||
|
||||
Handlers in `storyteller_web` follow this structure:
|
||||
|
||||
1. **Request/Response types** with `#[derive(Deserialize/Serialize, ToSchema)]`
|
||||
2. **Error enum** implementing `ResponseError`, `Display`, `Serialize`, `ToSchema`
|
||||
3. **Handler function** annotated with `#[utoipa::path(...)]` for OpenAPI docs
|
||||
4. Handler returns `Result<Json<Response>, ErrorType>`. Only use `Result<HttpResponse, ErrorType>` when you need to set headers/cookies.
|
||||
|
||||
### Error Types
|
||||
|
||||
- Use `CommonWebError` for simple handlers that only need standard HTTP error codes
|
||||
- Use a custom error enum when you need endpoint-specific error variants (e.g. `LoginErrorType::InvalidCredentials`)
|
||||
- Custom error enums MUST implement `ResponseError` (actix), `Display`, and `Serialize`
|
||||
- When adding `From<RequireUserSessionError>` or similar conversions, implement them on `CommonWebError` in its own module (orphan rule)
|
||||
- Error response bodies include: `success: false`, `error_code`, `error_code_str`
|
||||
|
||||
### Session/Auth
|
||||
|
||||
- `require_user_session_using_connection()` reuses an open DB connection (preferred)
|
||||
- `require_user_session()` acquires its own connection (deprecated)
|
||||
- `require_moderator()` for admin-only endpoints
|
||||
|
||||
### API Type Definitions
|
||||
|
||||
- Shared request/response types go in `artcraft_api_defs` crate (under `crates/api_clients/artcraft/artcraft_api_defs/`)
|
||||
- Types that need `ResponseError` impl must stay in `storyteller_web` (orphan rule)
|
||||
- New types must be added to `api_doc.rs` schemas (in storyteller-web) for Swagger generation
|
||||
|
||||
## Enums (Database-backed)
|
||||
|
||||
- Located in `crates/schema/public/enums/src/by_table/{table_name}/`
|
||||
- Require manual `to_str()` and `from_str()` implementations
|
||||
- Use `impl_enum_display_and_debug_using_to_str!` and `impl_mysql_enum_coders!` macros
|
||||
- Add comprehensive tests: serialization, round-trip, variant count
|
||||
- YOU CAN ADD NEW VALUES but DO NOT CHANGE EXISTING VALUES without a migration strategy
|
||||
- Note that adding new values can break older versions of the Tauri desktop app that read
|
||||
responses over Rust - make sure it consumes variants with an "Unknown(String)" variant
|
||||
catch-all to future proof the APIs.
|
||||
|
||||
## Tokens (Primary Keys)
|
||||
|
||||
- Located in `crates/schema/public/tokens/src/tokens/`
|
||||
- Opaque `String` wrappers with Stripe-like prefixes (e.g. `user_`, `mf_`)
|
||||
- Use `impl_string_token!`, `impl_mysql_token_from_row!`, `impl_crockford_generator!` macros
|
||||
@@ -0,0 +1,59 @@
|
||||
# Code Style
|
||||
|
||||
## Rust
|
||||
|
||||
- Two spaces for indentation (not four)
|
||||
- No minimum supported Rust version; use latest stable features freely
|
||||
- `#[macro_use] extern crate serde_derive;` is used in binary crates; library crates use `use serde_derive::{Serialize, Deserialize};`
|
||||
- Prefer `log` crate macros (`info!`, `warn!`, `error!`) over `println!`
|
||||
- Use `anyhow::Result` / `AnyhowResult` for fallible functions in application code
|
||||
- Enum Display/Debug: use `impl_enum_display_and_debug_using_to_str!` macro, not `derive_more::Display` (CLion doesn't understand it)
|
||||
- Fields that are optional use the `maybe_` prefix: `maybe_creator_user_token`, `maybe_prompt_token`
|
||||
- When implementing `fmt::Display` for error types, use the pattern: `write!(f, "{:?}", self)`
|
||||
|
||||
## File Layout (Top-to-Bottom Reading Order)
|
||||
|
||||
Organize code so a human reading top-to-bottom encounters the most important things first and
|
||||
can drill down into details only when curious. Think of it like a newspaper: headline first,
|
||||
then the story, then the fine print.
|
||||
|
||||
### Ordering within a file
|
||||
|
||||
1. **Constants** at the top, right after imports.
|
||||
2. **The primary public type** (the main struct/enum the file is about) comes next.
|
||||
A reader opening this file should immediately see what it defines.
|
||||
3. **Supporting/subordinate types** (sub-structs, helper enums, serialization DTOs) go
|
||||
below the primary type, not above it. Ask: "Would a reader need to know this type
|
||||
exists before seeing the main type?" — if no, push it down.
|
||||
4. **Type ordering for API types**: Request, then Response (success), then Error.
|
||||
5. **`impl` blocks** after their type definitions.
|
||||
|
||||
### Ordering within an `impl` block
|
||||
|
||||
1. **Constructors** (`new`, `from_*`, `builder`) at the top.
|
||||
2. **Public methods** next — these are the main entry points a reader cares about.
|
||||
3. **Private helper methods** below public methods.
|
||||
- Among helpers: place "meaty" helpers (substantial logic, direct continuations of the
|
||||
public entry point) above "leaf" helpers (small formatters, simple lookups).
|
||||
- A method that calls another method in the same file should appear *above* the method
|
||||
it calls. This lets readers follow the call chain downward.
|
||||
|
||||
## Naming
|
||||
|
||||
- Handler functions: `{verb}_{noun}_handler` (e.g. `get_health_check_handler`, `login_handler`)
|
||||
- Error enums: `{Feature}Error` (e.g. `FalWebhookError`, `HealthCheckError`)
|
||||
- Request/response structs: `{Action}Request`, `{Action}Response`, `{Action}SuccessResponse`
|
||||
- Path params: `{Action}PathInfo`
|
||||
- Builder structs: `{Thing}Builder` with `set_` prefixed setters and a `build()` method
|
||||
|
||||
## Imports
|
||||
|
||||
- Group imports: std, external crates, internal workspace crates, `crate::` imports
|
||||
- Use fully qualified paths for one-off references; `use` for repeated references
|
||||
- Prefer specific imports over wildcards, except in `api_doc.rs` and test modules
|
||||
|
||||
## TypeScript / Frontend
|
||||
|
||||
- TypeScript with React, Vite, Zustand, Three.js
|
||||
- Nx monorepo under `crates/frontend/`
|
||||
- Two spaces for indentation
|
||||
@@ -0,0 +1,27 @@
|
||||
# Testing
|
||||
|
||||
## Running Tests
|
||||
|
||||
- Most crates: `cargo test -p {crate_name}`
|
||||
- Crates using SQLx offline mode: `SQLX_OFFLINE=true cargo test -p {crate_name}`
|
||||
- The `storyteller-web` and `mysql_queries` crates require `SQLX_OFFLINE=true` for compilation
|
||||
- Use `cargo check -p {crate_name}` for fast compilation checks without running tests
|
||||
|
||||
## Test Patterns
|
||||
|
||||
- Tests live in `#[cfg(test)] mod tests { ... }` at the bottom of each file
|
||||
- Group related tests in sub-modules: `mod explicit_checks`, `mod mechanical_checks`
|
||||
- Enum tests should cover: serialization, deserialization, `to_str`/`from_str` round-trip, variant count
|
||||
- Password/crypto tests: be mindful of computation cost, don't add too many bcrypt test cases
|
||||
|
||||
## What to Test
|
||||
|
||||
- New error types and their mappings
|
||||
- Enum variant serialization stability (these are stored in the database)
|
||||
- Hash/deduplication functions with known inputs
|
||||
- Edge cases in parsers (empty input, missing fields, malformed data)
|
||||
|
||||
## What Not to Test
|
||||
|
||||
- Don't add integration tests that require a running database unless explicitly asked
|
||||
- Don't add tests for simple struct construction or trivial getters
|
||||
+47
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"db_name": "MySQL",
|
||||
"query": "\nSELECT\n j.status as `job_status: enums::common::job_status_plus::JobStatusPlus`,\n j.failure_reason as job_failure_reason,\n wle.credits_delta,\n wle.maybe_linked_refund_ledger_token as `maybe_linked_refund_ledger_token: tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken`,\n j.on_success_result_entity_token as `on_success_result_media_token: tokens::tokens::media_files::MediaFileToken`,\n j.token as `job_token: tokens::tokens::generic_inference_jobs::InferenceJobToken`,\n wle.token as `wallet_ledger_entry_token: tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken`,\n wle.entry_type as `wallet_ledger_entry_type: enums::by_table::wallet_ledger_entries::wallet_ledger_entry_type::WalletLedgerEntryType`\nFROM generic_inference_jobs as j\nLEFT OUTER JOIN users as u\n ON j.maybe_creator_user_token = u.token\nLEFT OUTER JOIN wallet_ledger_entries as wle\n ON wle.maybe_entity_ref = j.token\nWHERE u.token = ?\nORDER BY j.id DESC\n ",
|
||||
"query": "\nSELECT\n j.status as `job_status: enums::common::job_status_plus::JobStatusPlus`,\n j.failure_reason as job_failure_reason,\n wle.credits_delta,\n wle.maybe_linked_refund_ledger_token as `maybe_linked_refund_ledger_token: tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken`,\n j.on_success_result_entity_token as `on_success_result_media_token: tokens::tokens::media_files::MediaFileToken`,\n j.token as `job_token: tokens::tokens::generic_inference_jobs::InferenceJobToken`,\n wle.token as `wallet_ledger_entry_token: tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken`,\n wle.entry_type as `wallet_ledger_entry_type: enums::by_table::wallet_ledger_entries::wallet_ledger_entry_type::WalletLedgerEntryType`,\n j.maybe_external_third_party as `maybe_external_third_party: enums::by_table::generic_inference_jobs::inference_job_external_third_party::InferenceJobExternalThirdParty`,\n j.maybe_external_third_party_id,\n j.created_at,\n j.updated_at\nFROM generic_inference_jobs as j\nLEFT OUTER JOIN users as u\n ON j.maybe_creator_user_token = u.token\nLEFT OUTER JOIN wallet_ledger_entries as wle\n ON wle.maybe_entity_ref = j.token\nWHERE u.token = ?\nORDER BY j.id DESC\n ",
|
||||
"describe": {
|
||||
"columns": [
|
||||
{
|
||||
@@ -82,6 +82,46 @@
|
||||
"char_set": 224,
|
||||
"max_size": 128
|
||||
}
|
||||
},
|
||||
{
|
||||
"ordinal": 8,
|
||||
"name": "maybe_external_third_party: enums::by_table::generic_inference_jobs::inference_job_external_third_party::InferenceJobExternalThirdParty",
|
||||
"type_info": {
|
||||
"type": "VarString",
|
||||
"flags": "MULTIPLE_KEY | BINARY",
|
||||
"char_set": 224,
|
||||
"max_size": 64
|
||||
}
|
||||
},
|
||||
{
|
||||
"ordinal": 9,
|
||||
"name": "maybe_external_third_party_id",
|
||||
"type_info": {
|
||||
"type": "VarString",
|
||||
"flags": "MULTIPLE_KEY | BINARY",
|
||||
"char_set": 224,
|
||||
"max_size": 256
|
||||
}
|
||||
},
|
||||
{
|
||||
"ordinal": 10,
|
||||
"name": "created_at",
|
||||
"type_info": {
|
||||
"type": "Timestamp",
|
||||
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | TIMESTAMP",
|
||||
"char_set": 63,
|
||||
"max_size": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"ordinal": 11,
|
||||
"name": "updated_at",
|
||||
"type_info": {
|
||||
"type": "Timestamp",
|
||||
"flags": "NOT_NULL | BINARY | TIMESTAMP | ON_UPDATE_NOW",
|
||||
"char_set": 63,
|
||||
"max_size": 19
|
||||
}
|
||||
}
|
||||
],
|
||||
"parameters": {
|
||||
@@ -95,8 +135,12 @@
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
]
|
||||
},
|
||||
"hash": "0757d81ba153b2ad2df25df3dd92b655ef08b95f5f83251bf3573f9be3a9f8d1"
|
||||
"hash": "cbdaa45597de14d1eb6dc0f6a95788d56334757bb3d03eda2eb64df3ba2a0144"
|
||||
}
|
||||
@@ -17,6 +17,8 @@ artcraft/
|
||||
│ ├── artcraft_migrations/ # ArtCraft desktop app SQLite migrations
|
||||
│ ├── migrations/ # Server MySQL migrations
|
||||
│ └── migrations_squashed/ # Fully materialized MySQL schema definitions for most tables
|
||||
├── _tools/ # Various 3rd party tool integrations and configurations
|
||||
│ └── postman/ # Postman configs for test HTTP requests against development and production
|
||||
├── build/ # Dockerfile build instructions for server components
|
||||
├── crates/ # Rust workspace
|
||||
│ ├── api_clients/ # HTTP clients for calling internal and 3rd party services
|
||||
@@ -60,3 +62,14 @@ artcraft/
|
||||
- A mix of wreq and reqwest for Rust HTTP clients
|
||||
- TypeScript with Nx, React, Vite, Zustand, and Three.js
|
||||
- Use two spaces for indentation
|
||||
|
||||
### File Layout
|
||||
|
||||
Organize for top-to-bottom reading. Important things first, details later.
|
||||
|
||||
- **Constants** at the top (after imports)
|
||||
- **Structs/enums** next; outer structs above inner sub-structs
|
||||
- **API types** in order: Request, Response, Error
|
||||
- **In impl blocks**: constructors first, then public methods, then private helpers
|
||||
- Private helpers go *below* the methods that call them
|
||||
- Among helpers: meatier logic above leaf-level formatters
|
||||
|
||||
Generated
+76
-10
@@ -557,9 +557,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anstream"
|
||||
version = "0.6.14"
|
||||
version = "0.6.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
|
||||
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"anstyle-parse",
|
||||
@@ -596,12 +596,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anstyle-wincon"
|
||||
version = "3.0.2"
|
||||
version = "3.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
|
||||
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"windows-sys 0.52.0",
|
||||
"once_cell_polyfill",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3273,7 +3274,7 @@ dependencies = [
|
||||
"libc",
|
||||
"option-ext",
|
||||
"redox_users",
|
||||
"windows-sys 0.61.2",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5162,6 +5163,12 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-range"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
|
||||
|
||||
[[package]]
|
||||
name = "http-types"
|
||||
version = "2.12.0"
|
||||
@@ -6302,7 +6309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.52.6",
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7737,6 +7744,12 @@ version = "1.21.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
||||
|
||||
[[package]]
|
||||
name = "once_cell_polyfill"
|
||||
version = "1.70.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.3.0"
|
||||
@@ -8023,6 +8036,19 @@ dependencies = [
|
||||
"sha2 0.10.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pager"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"errors",
|
||||
"log",
|
||||
"rootly_client",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"tokio",
|
||||
"workspace-build-acceleration",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pango"
|
||||
version = "0.18.3"
|
||||
@@ -9584,6 +9610,26 @@ dependencies = [
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rootly_client"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"env",
|
||||
"env_logger 0.11.9",
|
||||
"errors",
|
||||
"log",
|
||||
"reqwest 0.12.23",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"workspace-build-acceleration",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rootly_config"
|
||||
version = "0.0.1"
|
||||
|
||||
[[package]]
|
||||
name = "rsa"
|
||||
version = "0.9.6"
|
||||
@@ -9777,7 +9823,7 @@ dependencies = [
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.12.1",
|
||||
"windows-sys 0.61.2",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9894,7 +9940,7 @@ dependencies = [
|
||||
"security-framework 3.7.0",
|
||||
"security-framework-sys",
|
||||
"webpki-root-certs",
|
||||
"windows-sys 0.61.2",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10159,12 +10205,16 @@ dependencies = [
|
||||
"jobs_common",
|
||||
"log",
|
||||
"mysql_queries",
|
||||
"pager",
|
||||
"reqwest 0.12.23",
|
||||
"rootly_client",
|
||||
"rootly_config",
|
||||
"seedance2pro_client",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"server_environment",
|
||||
"shared_env_var_config",
|
||||
"sqlx",
|
||||
"tokens",
|
||||
"tokio",
|
||||
@@ -10665,6 +10715,13 @@ dependencies = [
|
||||
"keccak",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "shared_env_var_config"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"easyenv",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "shlex"
|
||||
version = "1.3.0"
|
||||
@@ -11228,6 +11285,7 @@ dependencies = [
|
||||
"mimetypes",
|
||||
"mysql_queries",
|
||||
"once_cell",
|
||||
"pager",
|
||||
"password",
|
||||
"primitives",
|
||||
"prompt_engineering",
|
||||
@@ -11240,6 +11298,8 @@ dependencies = [
|
||||
"regex",
|
||||
"resend-rs",
|
||||
"reusable_types",
|
||||
"rootly_client",
|
||||
"rootly_config",
|
||||
"rust-s3",
|
||||
"rustls 0.23.36",
|
||||
"seedance2pro_client",
|
||||
@@ -11247,6 +11307,7 @@ dependencies = [
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"server_environment",
|
||||
"shared_env_var_config",
|
||||
"speculoos",
|
||||
"sqlx",
|
||||
"strum",
|
||||
@@ -11791,6 +11852,7 @@ dependencies = [
|
||||
"gtk",
|
||||
"heck 0.5.0",
|
||||
"http 1.3.1",
|
||||
"http-range",
|
||||
"jni 0.21.1",
|
||||
"libc",
|
||||
"log",
|
||||
@@ -12152,7 +12214,7 @@ dependencies = [
|
||||
"getrandom 0.4.1",
|
||||
"once_cell",
|
||||
"rustix 1.1.4",
|
||||
"windows-sys 0.61.2",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -13322,10 +13384,14 @@ dependencies = [
|
||||
"jobs_common",
|
||||
"log",
|
||||
"mysql_queries",
|
||||
"pager",
|
||||
"rootly_client",
|
||||
"rootly_config",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"server_environment",
|
||||
"shared_env_var_config",
|
||||
"sqlx",
|
||||
"tempdir",
|
||||
"tokio",
|
||||
|
||||
+11
-1
@@ -18,6 +18,7 @@ members = [
|
||||
"crates/api_clients/muapi_client",
|
||||
"crates/api_clients/openai_sora_client",
|
||||
"crates/api_clients/openart_client",
|
||||
"crates/api_clients/rootly_client",
|
||||
"crates/api_clients/runwayml_client",
|
||||
"crates/api_clients/seedance2pro_client",
|
||||
"crates/api_clients/thumbnail_generator",
|
||||
@@ -74,6 +75,7 @@ members = [
|
||||
"crates/lib/jwt_signer",
|
||||
"crates/lib/logging",
|
||||
"crates/lib/markdown",
|
||||
"crates/lib/pager",
|
||||
"crates/lib/password",
|
||||
"crates/lib/server_environment",
|
||||
"crates/lib/sqlx_mysql_helpers",
|
||||
@@ -99,6 +101,10 @@ members = [
|
||||
# Schema (buckets): S3/R2 topology
|
||||
"crates/schema/buckets/bucket_paths",
|
||||
|
||||
# Schema (config): configuration constants for external services
|
||||
"crates/schema/config/rootly_config",
|
||||
"crates/schema/config/shared_env_var_config",
|
||||
|
||||
# Schema (database): queries, database layouts, Redis keys, etc.
|
||||
"crates/schema/database/elasticsearch_schema",
|
||||
"crates/schema/database/migration",
|
||||
@@ -239,6 +245,9 @@ ffmpeg_utils = { path = "crates/lib/ffmpeg_utils" }
|
||||
file_to_base64_url = { path = "crates/lib/files/file_to_base64_url" }
|
||||
filesys = { path = "crates/lib/files/filesys" }
|
||||
grok_client = { path = "crates/api_clients/grok_client" }
|
||||
rootly_client = { path = "crates/api_clients/rootly_client" }
|
||||
rootly_config = { path = "crates/schema/config/rootly_config" }
|
||||
shared_env_var_config = { path = "crates/schema/config/shared_env_var_config" }
|
||||
http_headers = { path = "crates/lib/http_headers" }
|
||||
images = { path = "crates/lib/files/images" }
|
||||
jobs_common = { path = "crates/lib/jobs_common" }
|
||||
@@ -250,6 +259,7 @@ midjourney_client = { path = "crates/api_clients/midjourney_client" }
|
||||
mimetypes = { path = "crates/lib/files/mimetypes" }
|
||||
muapi_client = { path = "crates/api_clients/muapi_client" }
|
||||
mysql_queries = { path = "crates/schema/database/mysql_queries" }
|
||||
pager = { path = "crates/lib/pager" }
|
||||
openai_sora_client = { path = "crates/api_clients/openai_sora_client" }
|
||||
primitives = { path = "crates/lib/data/primitives" }
|
||||
seedance2pro_client = { path = "crates/api_clients/seedance2pro_client" }
|
||||
@@ -317,7 +327,7 @@ sha2 = "0.11.0-rc.5"
|
||||
sha3 = "0.10.8"
|
||||
speculoos = "0.11.0"
|
||||
strum = { version = "0.28.0", features = ["derive"] }
|
||||
tauri = { version = "2.8.3", features = ["unstable", "devtools"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
|
||||
tauri = { version = "2.8.3", features = ["unstable", "devtools", "protocol-asset"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
|
||||
tauri-plugin-dialog = "2.3.3"
|
||||
tauri-plugin-fs = "2.4.2"
|
||||
tauri-plugin-log = "2.6.0"
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
-- NB: This is a manually squashed view of all the CREATE and ALTER statements,
|
||||
-- with comments attached to the fields for centralized documentation.
|
||||
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Stores the media files (images) used as input when creating a character.
|
||||
CREATE TABLE character_creation_assets (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The media file used as a creation input (e.g. reference image).
|
||||
asset_media_file_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
KEY index_character_token (character_token),
|
||||
KEY index_asset_media_file_token (asset_media_file_token)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -0,0 +1,28 @@
|
||||
-- NB: This is a manually squashed view of all the CREATE and ALTER statements,
|
||||
-- with comments attached to the fields for centralized documentation.
|
||||
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Stores prompts/descriptions used when creating a character.
|
||||
CREATE TABLE character_creation_prompts (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The prompt or description used during character creation.
|
||||
prompt TEXT DEFAULT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
KEY index_character_token (character_token)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -0,0 +1,71 @@
|
||||
-- NB: This is a manually squashed view of all the CREATE and ALTER statements,
|
||||
-- with comments attached to the fields for centralized documentation.
|
||||
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Maps our characters to their representations in third-party systems.
|
||||
-- A single character may have entries in multiple third-party systems
|
||||
-- (e.g. Kinovi for Seedance, Runway for Gen-3, etc.).
|
||||
-- If a third-party character needs to be recreated, a new row is inserted.
|
||||
CREATE TABLE character_third_party_entities (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Effective "primary key" (PUBLIC)
|
||||
-- We may need to recreate the character in a third party, so this gets its own token.
|
||||
token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Whether this third-party entity is active and usable.
|
||||
is_active BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
-- ========== THIRD PARTY DETAILS ==========
|
||||
|
||||
-- Which third-party system the character lives in (enum crate type).
|
||||
-- e.g. "kinovi", "runway", etc.
|
||||
third_party VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Which types of models can use this character (enum crate type).
|
||||
-- e.g. "seedance_2_pro", "seedance_2_fast", etc.
|
||||
third_party_scopes VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The identifier in the third-party system.
|
||||
-- e.g. Kinovi's "char_1774752056469_2wlxoq"
|
||||
third_party_id VARCHAR(64) NOT NULL,
|
||||
|
||||
-- The name used by the third party.
|
||||
-- Important for Kinovi since characters are referenced by name in prompts.
|
||||
third_party_name VARCHAR(255) NOT NULL,
|
||||
|
||||
-- An upstream third party of the third party (if any).
|
||||
-- e.g. Kinovi's assetId "asset-20260329104101-kk5kl"
|
||||
maybe_fourth_party_id VARCHAR(64) DEFAULT NULL,
|
||||
|
||||
-- ========== JOB TRACKING ==========
|
||||
|
||||
-- Our job system token (if the character was created via a job).
|
||||
maybe_origin_job_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- Third party's job system token (if any).
|
||||
maybe_origin_third_party_job_id VARCHAR(64) DEFAULT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY (token),
|
||||
KEY index_character_token (character_token),
|
||||
KEY index_third_party (third_party),
|
||||
KEY index_third_party_id (third_party_id),
|
||||
KEY index_is_active (is_active)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -0,0 +1,60 @@
|
||||
-- NB: This is a manually squashed view of all the CREATE and ALTER statements,
|
||||
-- with comments attached to the fields for centralized documentation.
|
||||
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Characters are reusable entities that can be referenced in video/image generations.
|
||||
-- A character is created from one or more reference images and registered with third-party
|
||||
-- systems (e.g. Kinovi/Seedance) that support character-based generation.
|
||||
CREATE TABLE characters (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Effective "primary key" (PUBLIC)
|
||||
token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Whether the character has been fully created and is available for use.
|
||||
-- A character may exist in the database before its creation job completes.
|
||||
is_active BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
-- ========== CHARACTER DETAILS ==========
|
||||
|
||||
-- Display name for the character.
|
||||
name VARCHAR(255) NOT NULL,
|
||||
|
||||
-- Optional description of the character.
|
||||
maybe_description VARCHAR(512) DEFAULT NULL,
|
||||
|
||||
-- ========== MEDIA ==========
|
||||
|
||||
-- Avatar image (small/thumbnail).
|
||||
maybe_avatar_media_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- Full-size reference image.
|
||||
maybe_full_image_media_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- ========== CREATOR ==========
|
||||
|
||||
-- The user who created this character.
|
||||
maybe_creator_user_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- For abuse tracking.
|
||||
creator_ip_address VARCHAR(40) NOT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY (token),
|
||||
KEY index_maybe_creator_user_token (maybe_creator_user_token),
|
||||
KEY index_is_active (is_active),
|
||||
KEY index_created_at (created_at)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -46,6 +46,7 @@ CREATE TABLE generic_inference_jobs (
|
||||
-- * background_removal
|
||||
inference_category VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Enum: InferenceJobExternalThirdParty
|
||||
-- If the job is externally enqueued, this is the third-party service
|
||||
-- responsible for the job. Typically, we won't run an inference job for
|
||||
-- jobs being run on a third party.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
DROP TABLE IF EXISTS characters;
|
||||
@@ -0,0 +1,55 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
CREATE TABLE characters (
|
||||
-- Not used for anything except replication (private, not even used in queries)
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Public-facing "primary key" (PUBLIC)
|
||||
token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Whether the character has been fully created and is available for use.
|
||||
-- A character may exist in the database before its creation job completes.
|
||||
is_active BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
-- ========== CHARACTER DETAILS ==========
|
||||
|
||||
-- User's display name for the character.
|
||||
name VARCHAR(255) NOT NULL,
|
||||
|
||||
-- Optional user description of the character.
|
||||
maybe_description VARCHAR(512) DEFAULT NULL,
|
||||
|
||||
-- ========== MEDIA ==========
|
||||
|
||||
-- Avatar image (cropped to face, ideally).
|
||||
maybe_avatar_media_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- Full-size reference image.
|
||||
maybe_full_image_media_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- ========== CREATOR ==========
|
||||
|
||||
-- The user who created this character.
|
||||
maybe_creator_user_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- For abuse tracking.
|
||||
creator_ip_address VARCHAR(40) NOT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY (token),
|
||||
KEY index_maybe_creator_user_token (maybe_creator_user_token),
|
||||
KEY index_is_active (is_active),
|
||||
KEY index_created_at (created_at),
|
||||
KEY index_deleted_at (deleted_at)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
DROP TABLE IF EXISTS character_third_party_entities;
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
CREATE TABLE character_third_party_entities (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- Whether this third-party entity is active and usable.
|
||||
is_active BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
-- ========== THIRD PARTY DETAILS ==========
|
||||
|
||||
-- Which third-party system the character lives in (enum crate type).
|
||||
-- e.g. "kinovi", "runway", etc.
|
||||
third_party VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The identifier in the third-party system.
|
||||
-- e.g. Kinovi's "char_1774752056469_2wlxoq"
|
||||
third_party_id VARCHAR(64) NOT NULL,
|
||||
|
||||
-- Which types of models can use this character (enum crate type).
|
||||
-- e.g. "kinovi_seedance_2_pro", "kinovi_seedance_2_fast", etc.
|
||||
third_party_scopes VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The name used by the third party.
|
||||
-- Important for Kinovi since characters are referenced by name in prompts.
|
||||
third_party_name VARCHAR(255) NOT NULL,
|
||||
|
||||
-- An upstream third party of the third party (if any).
|
||||
-- e.g. Kinovi's assetId "asset-20260329104101-kk5kl"
|
||||
maybe_fourth_party_id VARCHAR(64) DEFAULT NULL,
|
||||
|
||||
-- ========== JOB TRACKING ==========
|
||||
|
||||
-- Our job system token (if the character was created via a job).
|
||||
maybe_origin_job_token VARCHAR(32) DEFAULT NULL,
|
||||
|
||||
-- Third party's job system token (if any).
|
||||
maybe_origin_third_party_job_id VARCHAR(64) DEFAULT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY unique_third_party_id (third_party, third_party_id),
|
||||
KEY index_character_token (character_token),
|
||||
KEY index_third_party (third_party),
|
||||
KEY index_third_party_id (third_party_id),
|
||||
KEY index_is_active (is_active)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
DROP TABLE IF EXISTS character_creation_assets;
|
||||
@@ -0,0 +1,26 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Stores the media files (images) used as input when creating a character.
|
||||
CREATE TABLE character_creation_assets (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The media file used as a creation input (e.g. reference image).
|
||||
asset_media_file_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
KEY index_character_token (character_token),
|
||||
KEY index_asset_media_file_token (asset_media_file_token)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
DROP TABLE IF EXISTS character_creation_prompts;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
-- noinspection SqlDialectInspectionForFile
|
||||
-- noinspection SqlNoDataSourceInspectionForFile
|
||||
-- noinspection SqlResolveForFile
|
||||
|
||||
-- Stores prompts/descriptions used when creating a character.
|
||||
CREATE TABLE character_creation_prompts (
|
||||
-- Not used for anything except replication.
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
-- Foreign key to the characters table.
|
||||
character_token VARCHAR(32) NOT NULL,
|
||||
|
||||
-- The prompt or description used during character creation.
|
||||
prompt TEXT DEFAULT NULL,
|
||||
|
||||
-- ========== TIMESTAMPS ==========
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- ========== INDICES ==========
|
||||
|
||||
PRIMARY KEY (id),
|
||||
KEY index_character_token (character_token)
|
||||
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
@@ -0,0 +1,16 @@
|
||||
# Use this workspace to collaborate
|
||||
workspace:
|
||||
id: ""
|
||||
|
||||
# Each entry here maps a local resource to one or more corresponding objects in Postman Cloud
|
||||
cloudResources:
|
||||
collections:
|
||||
../postman/collections/ArtCraft API: 32845438-9defd864-8fb5-4b32-abbb-b87f16af5451
|
||||
environments:
|
||||
../postman/environments/Local Development.environment.yaml: 32845438-8b5c042a-aed6-491a-99a6-fcb2f72cbc44
|
||||
../postman/environments/Production.environment.yaml: 32845438-a5b2562e-057d-42c2-b054-67285a50e2b7
|
||||
|
||||
localResources:
|
||||
environments:
|
||||
- ../environments/Local Development.environment.yaml
|
||||
- ../environments/Production.environment.yaml
|
||||
@@ -0,0 +1,6 @@
|
||||
$kind: collection
|
||||
variables:
|
||||
- key: api_host
|
||||
value: https://api.fakeyou.com
|
||||
disabled: true
|
||||
secret: false
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 11000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
@@ -0,0 +1,10 @@
|
||||
$kind: http-request
|
||||
name: Set Bearer
|
||||
url: "{{api_host}}/v1/control_plane/sora_secret"
|
||||
method: POST
|
||||
body:
|
||||
type: urlencoded
|
||||
content:
|
||||
key: bearer
|
||||
value: ""
|
||||
order: 1000
|
||||
@@ -0,0 +1,10 @@
|
||||
$kind: http-request
|
||||
name: Set Cookie
|
||||
url: "{{api_host}}/v1/control_plane/sora_secret"
|
||||
method: POST
|
||||
body:
|
||||
type: urlencoded
|
||||
content:
|
||||
key: cookie
|
||||
value: ""
|
||||
order: 2000
|
||||
@@ -0,0 +1,10 @@
|
||||
$kind: http-request
|
||||
name: Set Sentinel
|
||||
url: "{{api_host}}/v1/control_plane/sora_secret"
|
||||
method: POST
|
||||
body:
|
||||
type: urlencoded
|
||||
content:
|
||||
key: sentinel
|
||||
value: ""
|
||||
order: 3000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 3000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 5000
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
$kind: http-request
|
||||
name: Estimate Image Cost
|
||||
url: "{{api_host}}/v1/generate/cost_estimate/image"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"model": "seedream_5_lite",
|
||||
"provider": "artcraft",
|
||||
"generation_mode": {"type": "text_to_image" },
|
||||
"aspect_ratio": "wide_sixteen_by_nine",
|
||||
"resolution": "two_k",
|
||||
"image_batch_count": 1
|
||||
}
|
||||
order: 2000
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
$kind: http-request
|
||||
name: Estimate Video Cost
|
||||
url: "{{api_host}}/v1/generate/cost_estimate/video"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"model": "seedance_2p0",
|
||||
"provider": "artcraft",
|
||||
"generation_mode": {"type": "text_to_video" },
|
||||
"aspect_ratio": "wide_sixteen_by_nine",
|
||||
"resolution": "four_k",
|
||||
"duration_seconds": 8,
|
||||
"video_batch_count": 4
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
$kind: http-request
|
||||
name: Background Removal
|
||||
url: "{{api_host}}/v1/generate/image/remove_background"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"media_file_token": "m_v0n7g8k6saeg3t117kxf227xprtdcc"
|
||||
}
|
||||
order: 5000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Flux 1 Dev (text to image)
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/gpt_image_1p5"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
|
||||
"number_images": 2
|
||||
}
|
||||
order: 6000
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
$kind: http-request
|
||||
name: Qwen Angle Edit
|
||||
url: "{{api_host}}/v1/generate/image/angle/qwen_edit_2511"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
"image_media_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9",
|
||||
"vertical_angle": 33.0,
|
||||
"horizontal_angle": 33.0
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 2000
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
$kind: http-request
|
||||
name: Edit Gpt-Image-1
|
||||
url: "{{api_host}}/v1/generate/image/edit/gpt_image_1"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
"image_media_tokens": ["m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb", "m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr"],
|
||||
"prompt": "Put the cube from the image on the beach. Use the night sky."
|
||||
}
|
||||
|
||||
/*pub struct GptImage1EditImageRequest {
|
||||
/// Idempotency token to prevent duplicate requests.
|
||||
pub uuid_idempotency_token: String,
|
||||
|
||||
/// Text prompt to generate the image from.
|
||||
pub prompt: Option<String>,
|
||||
|
||||
// TODO: OneOf for image_urls or image_media_tokens
|
||||
/// Image media tokens to include in the editing context.
|
||||
pub image_media_tokens: Option<Vec<MediaFileToken>>,
|
||||
|
||||
/// Size of the image to generate. Default is Square.
|
||||
pub image_size: Option<GptImage1EditImageImageSize>,
|
||||
|
||||
/// Number of images to generate. Default is one.
|
||||
pub num_images: Option<GptImage1EditImageNumImages>,
|
||||
|
||||
/// Quality of the image to generate. Default is High.
|
||||
pub image_quality: Option<GptImage1EditImageImageQuality>,
|
||||
}*/
|
||||
order: 1000
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
$kind: http-request
|
||||
name: Flux Pro Kontext Max
|
||||
url: "{{api_host}}/v1/generate/image/edit/flux_pro_kontext_max"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
"image_media_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9",
|
||||
"prompt": "Make this scene photorealistic. Change it to an overcast sky. Make the bricks look more aged and worn."
|
||||
}
|
||||
order: 2000
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 3000
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
$kind: http-request
|
||||
name: Flux Pro Inpaint
|
||||
url: "{{api_host}}/v1/generate/image/inpaint/flux_pro_1"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_cznbn2a1p9mcqeghbjedp12p5d60tn (dev - mochi glasses)
|
||||
// m_v6ppx1jq7rbhyxpj8mg1hkryqbc9h6 (dev - mochi glasses MASK)
|
||||
"image_media_token": "m_cznbn2a1p9mcqeghbjedp12p5d60tn",
|
||||
"mask_media_token": "m_v6ppx1jq7rbhyxpj8mg1hkryqbc9h6",
|
||||
"prompt": "Remove the glasses"
|
||||
}
|
||||
order: 1000
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 4000
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
$kind: http-request
|
||||
name: Bytedance Seedream 4.5 (edit image)
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_4p5"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_tokens": ["m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr", "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb"],
|
||||
"prompt": "Put the stars above the beach scene at night, add the cube on the beach."
|
||||
}
|
||||
order: 4000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Bytedance Seedream 4.5 (text to image)
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_4p5"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
|
||||
"number_images": 2
|
||||
}
|
||||
order: 6000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Bytedance Seedream 5 Lite
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_5_lite"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
|
||||
"number_images": 2
|
||||
}
|
||||
order: 7000
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
$kind: http-request
|
||||
name: GPT Image 1.5 (edit image)
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/gpt_image_1p5"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_tokens": ["m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr", "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb"],
|
||||
"prompt": "Put the stars above the beach scene at night, add the cube on the beach."
|
||||
}
|
||||
order: 3000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: GPT Image 1.5 (text to image)
|
||||
url: "{{api_host}}/v1/generate/image/flux_1_dev_text_to_image"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
|
||||
"number_images": 2
|
||||
}
|
||||
order: 5000
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
$kind: http-request
|
||||
name: Nano Banana 2
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/nano_banana_2"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (these tokens are invalid)
|
||||
//"image_media_tokens": [],
|
||||
"prompt": "A t-rex jumping rope, photorealistic. The t-rex is nervous."
|
||||
}
|
||||
order: 2000
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
$kind: http-request
|
||||
name: Nano Banana Pro (reference image)
|
||||
url: "{{api_host}}/v1/generate/image/multi_function/nano_banana_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_tokens": ["m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2", "m_5hhwgx47tzc68ms2ydkkwrdjakwtxk", "m_p4chw32084te7dv8t4jc3bjfmafmjh"],
|
||||
"prompt": "Add the man and the girl to the water scene. Make them hold hands."
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 3000
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
$kind: http-request
|
||||
name: Generate Hunyuan 2 Image to 3d
|
||||
url: "{{api_host}}/v1/generate/object/hunyuan_2_image_to_3d"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: ""
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
|
||||
"media_file_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9"
|
||||
}
|
||||
order: 2000
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
$kind: http-request
|
||||
name: Generate Hunyuan 3D v3 Image to Object
|
||||
url: "{{api_host}}/v1/generate/object/multi_function/hunyuan3d_v3"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: ""
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1"
|
||||
}
|
||||
order: 1000
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
$kind: http-request
|
||||
name: Generate Hunyuan 3D v3 Text to Object
|
||||
url: "{{api_host}}/v1/generate/object/multi_function/hunyuan3d_v3"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: ""
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "a large blue dragon with a smile"
|
||||
}
|
||||
order: 2000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 4000
|
||||
@@ -0,0 +1,21 @@
|
||||
$kind: http-request
|
||||
name: Marble 0.1 Mini
|
||||
url: "{{api_host}}/v1/generate/splat/worldlabs_marble_0p1_mini"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A hidden forest grotto, fireflies, lush green"
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 2000
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
$kind: http-request
|
||||
name: Generate Kling 1.6 Video
|
||||
url: "{{api_host}}/v1/generate/video/kling_1.6_pro_image_to_video"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_mxr5s0qpbj0w321pqcw7s2pj93c962 (dev - container ship)
|
||||
// m_f249t2nb8nggqd7ynpsjps5qmym5h3 (dev - oil tanker)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
|
||||
"media_file_token": "m_mxr5s0qpbj0w321pqcw7s2pj93c962",
|
||||
"end_frame_image_media_token": "m_f249t2nb8nggqd7ynpsjps5qmym5h3",
|
||||
"prompt": "A large ship in a lake, the camera pulls back and shows the oil tanker from overhead"
|
||||
}
|
||||
order: 2000
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
$kind: http-request
|
||||
name: Generate Kling 2.1 Pro Video
|
||||
url: "{{api_host}}/v1/generate/video/kling_2.1_pro_image_to_video"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev) - cube
|
||||
// m_mxr5s0qpbj0w321pqcw7s2pj93c962 (dev - container ship)
|
||||
// m_f249t2nb8nggqd7ynpsjps5qmym5h3 (dev - oil tanker)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
|
||||
"media_file_token": "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb",
|
||||
"end_frame_image_media_token": "m_f249t2nb8nggqd7ynpsjps5qmym5h3",
|
||||
"prompt": "A large ship in a lake, the camera pulls back and shows the oil tanker from overhead"
|
||||
}
|
||||
order: 3000
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Kling 2.5 Turbo Pro (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/kling_2p5_turbo_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"start_frame_image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1",
|
||||
"prompt": "The camera is zooming by. It shows the full city"
|
||||
}
|
||||
order: 5000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Kling 2.6 Pro (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/kling_2p6_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"start_frame_image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1",
|
||||
"prompt": "The camera is zooming by. It shows the full city"
|
||||
}
|
||||
order: 6000
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
$kind: http-request
|
||||
name: Kling 3.0 Pro (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/kling_3p0_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"start_frame_image_media_token": "m_8q0hx7g06dfrf28xxhjkgjhwcnqtbz",
|
||||
"end_frame_image_media_token": "m_8q0hx7g06dfrf28xxhjkgjhwcnqtbz",
|
||||
"prompt": "The corgi dances in a loop and then returns back to where it started"
|
||||
}
|
||||
order: 7000
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
$kind: http-request
|
||||
name: Seedance 1.5 Pro (frame to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/seedance_1p5_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
// m_wfyggg046gp7tqvexd9xar4t6zr5yj (artcraft mac - trains)
|
||||
// m_qty2g150r6ppkbapnryc4fx4ayf8rh (artcraft mac - trains wide)
|
||||
"prompt": "A subway and a passenger train are moving along outside the window. The camera pans out to show a wider view of the city and trains.",
|
||||
"start_frame_media_token": "m_wfyggg046gp7tqvexd9xar4t6zr5yj",
|
||||
"end_frame_media_token": "m_qty2g150r6ppkbapnryc4fx4ayf8rh"
|
||||
}
|
||||
order: 2000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Seedance 1.5 Pro (text to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/seedance_1p5_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A giant is walking around in a forest",
|
||||
"duration_seconds": 4
|
||||
}
|
||||
order: 1000
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
$kind: http-request
|
||||
name: Seedance 2.0 (frame to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/seedance_2p0"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
// m_wfyggg046gp7tqvexd9xar4t6zr5yj (artcraft mac - trains)
|
||||
// m_qty2g150r6ppkbapnryc4fx4ayf8rh (artcraft mac - trains wide)
|
||||
"prompt": "A subway and a passenger train are moving along outside the window. The camera pans out to show a wider view of the city and trains.",
|
||||
"start_frame_media_token": "m_wfyggg046gp7tqvexd9xar4t6zr5yj",
|
||||
"end_frame_media_token": "m_qty2g150r6ppkbapnryc4fx4ayf8rh"
|
||||
}
|
||||
order: 4000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Seedance 2.0 (text to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/seedance_2p0"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"prompt": "A red panda is is walking around in a forest",
|
||||
"duration_seconds": 4
|
||||
}
|
||||
order: 3000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Sora 2 (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/sora_2"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
|
||||
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
|
||||
}
|
||||
order: 10000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Sora 2 Pro (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/sora_2_pro"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
|
||||
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
|
||||
}
|
||||
order: 11000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Veo 3.1 (image to video) Copy
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/veo_3p1"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"start_frame_image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
|
||||
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
|
||||
}
|
||||
order: 8000
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Veo 3.1 Fast (image to video)
|
||||
url: "{{api_host}}/v1/generate/video/multi_function/veo_3p1_fast"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
|
||||
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
|
||||
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
|
||||
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
|
||||
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
|
||||
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
|
||||
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
|
||||
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
|
||||
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
|
||||
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
|
||||
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
|
||||
"start_frame_image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
|
||||
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
|
||||
}
|
||||
order: 9000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 9000
|
||||
@@ -0,0 +1,28 @@
|
||||
$kind: http-request
|
||||
name: Prompt Image
|
||||
url: "{{api_host}}/v1/image_studio/prompt"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: sora-bearer
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: sora-cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: sora-sentinel
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: >-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"snapshot_media_token": "m_kaghwk8vsn5yw1qp6q7yzbx9szfgwe",
|
||||
"prompt": "Match the provided image's composition and pose exactly as a reference. The characters should have the exact body poses, and the layouts of buildings and props should be close to exact. A girl standing in the middle of a clock town. N64 aesthetic."
|
||||
}
|
||||
order: 2000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Upload Scene Snapshot
|
||||
url: "{{api_host}}/v1/image_studio/scene_snapshot"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: snapshot
|
||||
src: []
|
||||
disabled: false
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 5000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
$kind: http-request
|
||||
name: Enqueue Studio Gen2 (Dev)
|
||||
url: "{{api_host}}/v1/studio_gen2/enqueue"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"image_file": "m_btkn9vng12j2bw9tm7dcbg8vp5bd3a",
|
||||
"video_file": "m_12h6ymaj4szk7ffhdj01n7c8x0d7ds",
|
||||
|
||||
"debug_sleep_millis": 600000,
|
||||
"debug_kill_old_jobs": true,
|
||||
"skip_image_resize": true,
|
||||
"tensor_image_width": 512,
|
||||
"tensor_image_height": 768
|
||||
}
|
||||
order: 2000
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
$kind: http-request
|
||||
name: Enqueue Studio Gen2 (Prod)
|
||||
url: "{{api_host}}/v1/studio_gen2/enqueue"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"image_file": "m_5kdgmdrfm6psvyq4df7h50jwhc6be4",
|
||||
"video_file": "m_hehnjnzkcf98gcmdx5g6ws85w7c2m3",
|
||||
"output_width": 1024,
|
||||
"output_height": 576,
|
||||
"debug_sleep_millis": 600000
|
||||
}
|
||||
order: 3000
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
$kind: http-request
|
||||
name: Enqueue Studio Gen2
|
||||
url: "{{api_host}}/v1/studio_gen2/enqueue"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"uuid_idempotency_token": "{{$randomUUID}}",
|
||||
"image_file": "m_9b4bk5bqah5k1ek2p9tmr1726c85yb",
|
||||
"video_file": "m_mzensqsx1fx82n7wqz3xknfw3qahfp",
|
||||
"output_width": 512,
|
||||
"output_height": 768,
|
||||
"debug_sleep_millis": 60000,
|
||||
"debug_kill_old_jobs": true,
|
||||
"fps": 8
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,6 @@
|
||||
$kind: http-request
|
||||
url: http://localhost:12345/v1/jobs/job/jinf_avdrxxv3dv04dfxh3jej57vbby2
|
||||
method: DELETE
|
||||
headers:
|
||||
Accept: application/json
|
||||
order: 6000
|
||||
@@ -0,0 +1,6 @@
|
||||
$kind: http-request
|
||||
url: "{{api_host}}/v1/jobs/job/jinf_fr522a4fv7jwz59pta1cjh630cm"
|
||||
method: DELETE
|
||||
headers:
|
||||
Accept: application/json
|
||||
order: 5000
|
||||
@@ -0,0 +1,6 @@
|
||||
$kind: http-request
|
||||
url: "{{api_host}}/v1/jobs/job/jinf_avdrxxv3dv04dfxh3jej57vbby2"
|
||||
method: GET
|
||||
headers:
|
||||
Accept: application/json
|
||||
order: 4000
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
$kind: http-request
|
||||
name: List Session Jobs (localhost)
|
||||
url: http://localhost:12345/v1/jobs/session
|
||||
method: GET
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
order: 3000
|
||||
@@ -0,0 +1,6 @@
|
||||
$kind: http-request
|
||||
url: "{{api_host}}/v1/jobs/session"
|
||||
method: GET
|
||||
headers:
|
||||
Accept: application/json
|
||||
order: 2000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 7000
|
||||
@@ -0,0 +1,14 @@
|
||||
$kind: http-request
|
||||
url: "{{api_host}}/v1/media_files/file/m_6hjpa9q8269h7n7rg5vk8zr82cxhx9"
|
||||
method: DELETE
|
||||
headers:
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
body:
|
||||
type: json
|
||||
content: |-
|
||||
{
|
||||
"as_mod": true,
|
||||
"set_delete": true
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,33 @@
|
||||
$kind: http-request
|
||||
name: Upload Engine Asset
|
||||
url: "{{api_host}}/v1/media_files/upload/engine_asset"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Walls and Floors
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
- type: text
|
||||
key: source
|
||||
value: file
|
||||
disabled: false
|
||||
order: 9000
|
||||
@@ -0,0 +1,26 @@
|
||||
$kind: http-request
|
||||
name: Upload Image
|
||||
url: "{{api_host}}/v1/media_files/upload/image"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
order: 4000
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
$kind: http-request
|
||||
name: Upload Media File (Generic - don't use unless necessary)
|
||||
url: "{{api_host}}/v1/media_files/upload"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
disabled: true
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
order: 5000
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
$kind: http-request
|
||||
name: Upload New Engine Asset
|
||||
url: "{{api_host}}/v1/media_files/upload/new_engine_asset"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: |
|
||||
Courtyard
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: text
|
||||
key: source
|
||||
value: file
|
||||
disabled: false
|
||||
- type: text
|
||||
key: file
|
||||
value: asdf
|
||||
disabled: true
|
||||
- type: text
|
||||
key: engine_category
|
||||
value: object
|
||||
disabled: false
|
||||
order: 11000
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
$kind: http-request
|
||||
name: Upload New Engine Asset
|
||||
url: "{{api_host}}/v1/media_files/upload/new_engine_asset"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
- type: file
|
||||
key: file
|
||||
src: /Users/bt/dev/storyteller/assets/engineer_test_files/pikachu.glb
|
||||
- type: text
|
||||
key: engine_category
|
||||
value: expression
|
||||
order: 2000
|
||||
@@ -0,0 +1,38 @@
|
||||
$kind: http-request
|
||||
name: Upload New Video
|
||||
url: "{{api_host}}/v1/media_files/upload/new_video"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
- type: text
|
||||
key: maybe_resample_fps
|
||||
value: "8"
|
||||
disabled: true
|
||||
- type: text
|
||||
key: maybe_trim_start_millis
|
||||
value: "3000"
|
||||
disabled: false
|
||||
- type: text
|
||||
key: maybe_trim_end_millis
|
||||
value: "2000"
|
||||
disabled: true
|
||||
order: 7000
|
||||
@@ -0,0 +1,30 @@
|
||||
$kind: http-request
|
||||
name: Upload Pmx
|
||||
url: "{{api_host}}/v1/media_files/upload/pmx"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
- type: text
|
||||
key: engine_category
|
||||
value: character
|
||||
disabled: false
|
||||
order: 3000
|
||||
@@ -0,0 +1,29 @@
|
||||
$kind: http-request
|
||||
name: Upload Spz
|
||||
url: "{{api_host}}/v1/media_files/upload/spz"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Cookie
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Splat File
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
order: 10000
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
$kind: http-request
|
||||
name: Upload Studio Shot (upload hostname)
|
||||
url: https://upload.storyteller.ai/v1/media_files/upload/studio_shot
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
- type: file
|
||||
key: file
|
||||
src: /Users/bt/dev/storyteller/temp/frames.zip
|
||||
order: 8000
|
||||
@@ -0,0 +1,26 @@
|
||||
$kind: http-request
|
||||
name: Upload Studio Shot
|
||||
url: https://upload.storyteller.ai/v1/media_files/upload/studio_shot
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: formdata
|
||||
content:
|
||||
- type: text
|
||||
key: maybe_title
|
||||
value: Foo Bar Baz
|
||||
disabled: false
|
||||
- type: text
|
||||
key: uuid_idempotency_token
|
||||
value: "{{$randomUUID}}"
|
||||
disabled: false
|
||||
- type: file
|
||||
key: file
|
||||
src: []
|
||||
disabled: false
|
||||
order: 6000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 1000
|
||||
@@ -0,0 +1,21 @@
|
||||
$kind: http-request
|
||||
name: Send Alert
|
||||
url: "{{api_host}}/v1/moderation/alerts/send"
|
||||
method: POST
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: json
|
||||
content: |
|
||||
{
|
||||
"title": "test alert from thread 2",
|
||||
"description": "testing testing test"
|
||||
}
|
||||
order: 1000
|
||||
@@ -0,0 +1,2 @@
|
||||
$kind: collection
|
||||
order: 4000
|
||||
@@ -0,0 +1,20 @@
|
||||
$kind: http-request
|
||||
name: List Image Models
|
||||
url: "{{api_host}}/v1/omni_gen/models/image"
|
||||
method: GET
|
||||
headers:
|
||||
- key: Accept
|
||||
value: application/json
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
- key: Session
|
||||
value: ""
|
||||
disabled: true
|
||||
body:
|
||||
type: text
|
||||
content: |
|
||||
{
|
||||
"title": "test alert"
|
||||
}
|
||||
order: 1000
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user