Skip to content

Instantly share code, notes, and snippets.

@iksnae
Created June 17, 2023 17:47
Show Gist options
  • Save iksnae/aaa25f3386374533abecdab347c79dea to your computer and use it in GitHub Desktop.
Save iksnae/aaa25f3386374533abecdab347c79dea to your computer and use it in GitHub Desktop.
screenplayer.json
openapi: 3.0.3
info:
title: Screenplayer API
description: API for managing and interacting with screenplays and projects in the Screenplayer platform.
version: 1.0.0
paths:
/api/projects:
post:
summary: Create a Project
description: Create a new project in the Screenplayer platform.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectInput'
responses:
'201':
description: Project created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
get:
summary: List Projects
description: Retrieve a list of all projects in the Screenplayer platform.
responses:
'200':
description: List of projects.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Project'
/api/projects/{projectId}:
get:
summary: Get Project Details
description: Retrieve details of a specific project.
parameters:
- name: projectId
in: path
description: ID of the project to retrieve.
required: true
schema:
type: string
responses:
'200':
description: Project details.
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
put:
summary: Update Project
description: Update an existing project in the Screenplayer platform.
parameters:
- name: projectId
in: path
description: ID of the project to update.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectInput'
responses:
'200':
description: Project updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
delete:
summary: Delete Project
description: Delete a project from the Screenplayer platform.
parameters:
- name: projectId
in: path
description: ID of the project to delete.
required: true
schema:
type: string
responses:
'204':
description: Project deleted successfully.
/api/screenplays/upload:
post:
summary: Upload Screenplay
description: Upload a screenplay file to be processed and associated with a project.
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
screenplay:
type: string
format: binary
responses:
'200':
description: Screenplay uploaded successfully.
/api/screenplays/{screenplayId}:
get:
summary: Get Screenplay
description: Retrieve details of a specific screenplay.
parameters:
- name: screenplayId
in: path
description: ID of the screenplay to retrieve.
required: true
schema:
type: string
responses:
'200':
description: Screenplay details.
content:
application/json:
schema:
$ref: '#/components/schemas/KhaosScreenplay'
/api/screenplays/{screenplayId}/generate:
post:
summary: Generate Watchable Content
description: Generate watchable content (video, audio, etc.) from a screenplay.
parameters:
- name: screenplayId
in: path
description: ID of the screenplay to generate content from.
required: true
schema:
type: string
responses:
'200':
description: Content generated successfully.
content:
application/json:
schema:
type: object
properties:
url:
type: string
metadata:
type: object
# Define additional metadata properties as needed
components:
schemas:
KhaosScene:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
location:
$ref: '#/components/schemas/Location'
characters:
type: array
items:
$ref: '#/components/schemas/Character'
shots:
type: array
items:
$ref: '#/components/schemas/KhaosShot'
KhaosShot:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
characters:
type: array
items:
$ref: '#/components/schemas/Character'
KhaosScreenplay:
type: object
properties:
title:
type: string
content:
# Define properties for the content of a parsed Fountain screenplay
type: object
scenes:
type: array
items:
$ref: '#/components/schemas/GeneratedScene'
characters:
type: array
items:
$ref: '#/components/schemas/Character'
locations:
type: array
items:
$ref: '#/components/schemas/Location'
tokens:
type: array
items:
$ref: '#/components/schemas/GeneratedScene.ScenedScreenplayToken'
GeneratedScene:
type: object
properties:
id:
type: string
format: uuid
t:
type: string
format: uuid
type:
type: string
sceneNumber:
type: string
location:
type: string
locationType:
type: string
timeOfDay:
type: string
actions:
type: array
items:
$ref: '#/components/schemas/SceneAction'
dialogues:
type: array
items:
$ref: '#/components/schemas/Dialogue'
SceneAction:
type: object
properties:
id:
type: string
format: uuid
t:
type: string
format: uuid
text:
type: string
Dialogue:
type: object
properties:
id:
type: string
format: uuid
t:
type: string
format: uuid
character:
type: string
lines:
type: array
items:
$ref: '#/components/schemas/DialogueLine'
parentheticals:
type: array
items:
$ref: '#/components/schemas/DialogueParenthetical'
DialogueLine:
type: object
properties:
id:
type: string
format: uuid
t:
type: string
format: uuid
text:
type: string
DialogueParenthetical:
type: object
properties:
id:
type: string
format: uuid
t:
type: string
format: uuid
text:
type: string
GeneratedScene.ScenedScreenplayToken:
type: object
properties:
id:
type: string
type:
type: string
text:
type: string
ScreenplayTokenType:
type: string
enum:
- scene
- scene_heading
- character
# Define other token types...
CharacterVoiceSynthResult:
type: object
properties:
audioUrl:
type: string
format: url
ParsedKhaosScreenplay:
type: object
# Define properties for the parsed Khaos screenplay
ParseFountainScreenplayResponse.Content:
type: object
# Define properties for the content of a parsed Fountain screenplay
ManagedKhaosProject:
type: object
# Define properties for a managed Khaos project
ProjectRetrievingError.NoProjectFound:
type: object
# Define properties or custom methods specific to this error
ProjectStoringError.FailedToUpdateProject:
type: object
# Define properties or custom methods specific to this error
ProjectInput:
type: object
properties:
title:
type: string
screenplayContent:
type: string
Project:
type: object
properties:
id:
type: string
format: uuid
title:
type: string
screenplays:
type: array
items:
type: string
format: uuid
Location:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
Character:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
FountainScreenplayElement:
oneOf:
- $ref: '#/components/schemas/FountainScreenplayElementAction'
- $ref: '#/components/schemas/FountainScreenplayElementDialogue'
- $ref: '#/components/schemas/FountainScreenplayElementDialogueBlock'
- $ref: '#/components/schemas/FountainScreenplayElementSection'
- $ref: '#/components/schemas/FountainScreenplayElementSlugline'
- $ref: '#/components/schemas/FountainScreenplayElementParenthetical'
- $ref: '#/components/schemas/FountainScreenplayElementCentered'
- $ref: '#/components/schemas/FountainScreenplayElementTransition'
- $ref: '#/components/schemas/FountainScreenplayElementDualDialogueBlock'
FountainScreenplayElementAction:
type: object
properties:
type:
type: string
value:
type: string
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementDialogue:
type: object
properties:
type:
type: string
value:
type: string
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementDialogueBlock:
type: object
properties:
type:
type: string
block:
$ref: '#/components/schemas/FountainDialogueBlock'
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementSection:
type: object
properties:
type:
type: string
value:
type: string
metadata:
$ref: '#/components/schemas/FountainMetadata'
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementSlugline:
type: object
properties:
type:
type: string
value:
type: string
metadata:
$ref: '#/components/schemas/FountainMetadata'
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementParenthetical:
type: object
properties:
type:
type: string
value:
type: string
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementCentered:
type: object
properties:
type:
type: string
value:
type: string
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementTransition:
type: object
properties:
type:
type: string
value:
type: string
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainScreenplayElementDualDialogueBlock:
type: object
properties:
type:
type: string
block:
$ref: '#/components/schemas/FountainDualDialogueBlock'
id:
type: string
icon:
type: string
color:
type: string
display:
type: string
FountainDialogueBlock:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/FountainScreenplayElement'
character:
type: string
FountainDualDialogueBlock:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/FountainScreenplayElement'
FountainMetadata:
type: object
properties:
depth:
type: integer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment