Pomo Earned Media API

The earned-media API from Pomo — 17 operation(s) for earned-media.

Business capability
Media Relations Management BC-850.40

Operations 20

GET /api/earned-media/projects List Earned Media Projects #
POST /api/earned-media/projects Create Earned Media Project #
GET /api/earned-media/projects/{project_id} Get Earned Media Project #
PATCH /api/earned-media/projects/{project_id} Update Earned Media Project #
POST /api/earned-media/projects/{project_id}/archive Archive Earned Media Project #
POST /api/earned-media/projects/{project_id}/generate Generate Earned Media Project #
POST /api/earned-media/projects/{project_id}/refresh-research Refresh Earned Media Research #
PUT /api/earned-media/projects/{project_id}/drafts/{draft_id} Save Earned Media Draft #
GET /api/earned-media/projects/{project_id}/drafts/{draft_id}/export Export Earned Media Draft #
POST /api/earned-media/projects/{project_id}/drafts/{draft_id}/rewrite Rewrite Earned Media Draft #
GET /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions List Earned Media Draft Versions #
POST /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions/{version_number}/restore Restore Earned Media Draft Version #
POST /api/earned-media/projects/{project_id}/targets/{target_id}/enrich-contact Enrich Earned Media Target Contact #
POST /api/earned-media/projects/{project_id}/targets/{target_id}/pitch Draft Earned Media Target Pitch #
PATCH /api/earned-media/projects/{project_id}/targets/{target_id} Update Earned Media Target #
GET /api/earned-media/press-room Get Earned Media Press Room #
PUT /api/earned-media/press-room Save Earned Media Press Room #
POST /api/earned-media/press-room/generate Generate Earned Media Press Room #
POST /api/earned-media/press-room/coverage Discover Earned Media Press Coverage #
POST /api/earned-media/press-room/coverage/url Add Earned Media Press Coverage Url #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pomo-earned-media-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pomo-earned-media-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GPT Backend Earned Media API
  version: 0.1.0
tags:
- name: earned-media
paths:
  /api/earned-media/projects:
    get:
      tags:
      - earned-media
      summary: List Earned Media Projects
      operationId: list_earned_media_projects_api_earned_media_projects_get
      security:
      - HTTPBearer: []
      parameters:
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - enum:
            - draft
            - generating
            - ready
            - needs_review
            - failed
            - archived
            type: string
          - type: 'null'
          title: Status
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 50
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response List Earned Media Projects Api Earned Media Projects Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - earned-media
      summary: Create Earned Media Project
      operationId: create_earned_media_project_api_earned_media_projects_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaProjectCreateRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Create Earned Media Project Api Earned Media Projects Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}:
    get:
      tags:
      - earned-media
      summary: Get Earned Media Project
      operationId: get_earned_media_project_api_earned_media_projects__project_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Earned Media Project Api Earned Media Projects  Project Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - earned-media
      summary: Update Earned Media Project
      operationId: update_earned_media_project_api_earned_media_projects__project_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaProjectUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Update Earned Media Project Api Earned Media Projects  Project Id  Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/archive:
    post:
      tags:
      - earned-media
      summary: Archive Earned Media Project
      description: Retire a story. Idempotent; refused while a generation lease is live.
      operationId: archive_earned_media_project_api_earned_media_projects__project_id__archive_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Archive Earned Media Project Api Earned Media Projects  Project Id  Archive Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/generate:
    post:
      tags:
      - earned-media
      summary: Generate Earned Media Project
      operationId: generate_earned_media_project_api_earned_media_projects__project_id__generate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaGenerateRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Generate Earned Media Project Api Earned Media Projects  Project Id  Generate Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/refresh-research:
    post:
      tags:
      - earned-media
      summary: Refresh Earned Media Research
      operationId: refresh_earned_media_research_api_earned_media_projects__project_id__refresh_research_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaRefreshResearchRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Refresh Earned Media Research Api Earned Media Projects  Project Id  Refresh Research Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}:
    put:
      tags:
      - earned-media
      summary: Save Earned Media Draft
      operationId: save_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__put
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaDraftSaveRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Save Earned Media Draft Api Earned Media Projects  Project Id  Drafts  Draft Id  Put
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/export:
    get:
      tags:
      - earned-media
      summary: Export Earned Media Draft
      description: Download the current saved draft as a recipient-ready PDF or HTML file.
      operationId: export_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__export_get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: format
        in: query
        required: false
        schema:
          enum:
          - pdf
          - html
          type: string
          default: pdf
          title: Format
      - name: timezone
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Timezone
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/rewrite:
    post:
      tags:
      - earned-media
      summary: Rewrite Earned Media Draft
      description: 'Claim the project for a rewrite, then hand the model call to the worker.


        The rewrite waits on one model call with nothing to stream, so the request

        is idle for its whole duration and the proxy closes it before the model

        answers. The client then sees a gateway error for work the server went on

        to finish. The project row carries the run the studio already polls, so the

        claim happens here and the call happens there.'
      operationId: rewrite_earned_media_draft_api_earned_media_projects__project_id__drafts__draft_id__rewrite_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaDraftRewriteRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Rewrite Earned Media Draft Api Earned Media Projects  Project Id  Drafts  Draft Id  Rewrite Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions:
    get:
      tags:
      - earned-media
      summary: List Earned Media Draft Versions
      operationId: list_earned_media_draft_versions_api_earned_media_projects__project_id__drafts__draft_id__versions_get
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response List Earned Media Draft Versions Api Earned Media Projects  Project Id  Drafts  Draft Id  Versions Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/drafts/{draft_id}/versions/{version_number}/restore:
    post:
      tags:
      - earned-media
      summary: Restore Earned Media Draft Version
      operationId: restore_earned_media_draft_version_api_earned_media_projects__project_id__drafts__draft_id__versions__version_number__restore_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: draft_id
        in: path
        required: true
        schema:
          type: string
          title: Draft Id
      - name: version_number
        in: path
        required: true
        schema:
          type: integer
          title: Version Number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaVersionRestoreRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Restore Earned Media Draft Version Api Earned Media Projects  Project Id  Drafts  Draft Id  Versions  Version Number  Restore Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}/enrich-contact:
    post:
      tags:
      - earned-media
      summary: Enrich Earned Media Target Contact
      description: Look up the outlet's published press contact route via live web search.
      operationId: enrich_earned_media_target_contact_api_earned_media_projects__project_id__targets__target_id__enrich_contact_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Enrich Earned Media Target Contact Api Earned Media Projects  Project Id  Targets  Target Id  Enrich Contact Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}/pitch:
    post:
      tags:
      - earned-media
      summary: Draft Earned Media Target Pitch
      description: Draft an outlet-specific pitch email from the story's verified material.
      operationId: draft_earned_media_target_pitch_api_earned_media_projects__project_id__targets__target_id__pitch_post
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Draft Earned Media Target Pitch Api Earned Media Projects  Project Id  Targets  Target Id  Pitch Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/projects/{project_id}/targets/{target_id}:
    patch:
      tags:
      - earned-media
      summary: Update Earned Media Target
      operationId: update_earned_media_target_api_earned_media_projects__project_id__targets__target_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: target_id
        in: path
        required: true
        schema:
          type: string
          title: Target Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaTargetUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Update Earned Media Target Api Earned Media Projects  Project Id  Targets  Target Id  Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/earned-media/press-room:
    get:
      tags:
      - earned-media
      summary: Get Earned Media Press Room
      operationId: get_earned_media_press_room_api_earned_media_press_room_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Get Earned Media Press Room Api Earned Media Press Room Get
      security:
      - HTTPBearer: []
    put:
      tags:
      - earned-media
      summary: Save Earned Media Press Room
      operationId: save_earned_media_press_room_api_earned_media_press_room_put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaPressRoomSaveRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Save Earned Media Press Room Api Earned Media Press Room Put
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/generate:
    post:
      tags:
      - earned-media
      summary: Generate Earned Media Press Room
      operationId: generate_earned_media_press_room_api_earned_media_press_room_generate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaPressRoomGenerateRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Generate Earned Media Press Room Api Earned Media Press Room Generate Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/coverage:
    post:
      tags:
      - earned-media
      summary: Discover Earned Media Press Coverage
      description: Claim the press room for a coverage sweep, then hand it to the worker.
      operationId: discover_earned_media_press_coverage_api_earned_media_press_room_coverage_post
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Discover Earned Media Press Coverage Api Earned Media Press Room Coverage Post
      security:
      - HTTPBearer: []
  /api/earned-media/press-room/coverage/url:
    post:
      tags:
      - earned-media
      summary: Add Earned Media Press Coverage Url
      description: Add one page the user already knows about.
      operationId: add_earned_media_press_coverage_url_api_earned_media_press_room_coverage_url_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EarnedMediaCoverageUrlRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Add Earned Media Press Coverage Url Api Earned Media Press Room Coverage Url Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
components:
  schemas:
    EarnedMediaCoverageUrlRequest:
      properties:
        url:
          type: string
          maxLength: 2000
          minLength: 8
          title: Url
      additionalProperties: false
      type: object
      required:
      - url
      title: EarnedMediaCoverageUrlRequest
      description: One page a person already knows about.
    EarnedMediaPressRoomGenerateRequest:
      properties:
        refresh:
          type: boolean
          title: Refresh
          default: false
      additionalProperties: false
      type: object
      title: EarnedMediaPressRoomGenerateRequest
    EarnedMediaPressAsset:
      properties:
        label:
          type: string
          maxLength: 220
          minLength: 1
          title: Label
        url:
          type: string
          maxLength: 2000
          minLength: 8
          title: Url
      additionalProperties: false
      type: object
      required:
      - label
      - url
      title: EarnedMediaPressAsset
    EarnedMediaPressRoomDateItem:
      properties:
        value:
          type: string
          format: date
          title: Value
        review_status:
          type: string
          enum:
          - suggested
          - verified
          - approved
          title: Review Status
          default: suggested
        source:
          anyOf:
          - $ref: '#/components/schemas/EarnedMediaPressRoomSource'
          - type: 'null'
      additionalProperties: false
      type: object
      required:
      - value
      title: EarnedMediaPressRoomDateItem
    EarnedMediaContact:
      properties:
        name:
          type: string
          maxLength: 220
          minLength: 1
          title: Name
        title:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Title
        email:
          anyOf:
          - type: string
            maxLength: 320
          - type: 'null'
          title: Email
        phone:
          anyOf:
          - type: string
            maxLength: 80
          - type: 'null'
          title: Phone
      additionalProperties: false
      type: object
      required:
      - name
      title: EarnedMediaContact
    EarnedMediaProjectUpdateRequest:
      properties:
        title:
          anyOf:
          - type: string
            maxLength: 220
            minLength: 3
          - type: 'null'
          title: Title
        story_format:
          anyOf:
          - type: string
            enum:
            - press_release
            - bylined_article
            - journalist_pitch
            - local_story
          - type: 'null'
          title: Story Format
        objective:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Objective
        audience:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Audience
        market:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Market
        primary_angle:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Primary Angle
        source_context:
          anyOf:
          - $ref: '#/components/schemas/EarnedMediaSourceContext'
          - type: 'null'
      additionalProperties: false
      type: object
      title: EarnedMediaProjectUpdateRequest
    EarnedMediaPressRoomSaveRequest:
      properties:
        content:
          $ref: '#/components/schemas/EarnedMediaPressRoomProfileContent'
        base_updated_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Base Updated At
      additionalProperties: false
      type: object
      required:
      - content
      title: EarnedMediaPressRoomSaveRequest
    EarnedMediaGenerateRequest:
      properties:
        draft_count:
          type: integer
          enum:
          - 1
          - 2
          title: Draft Count
          default: 2
        instruction:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Instruction
      additionalProperties: false
      type: object
      title: EarnedMediaGenerateRequest
    EarnedMediaSourceContext:
      properties:
        article_scope:
          type: string
          enum:
          - company
          - single_product
          - product_portfolio
          title: Article Scope
          default: company
        product_ids:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 8
          title: Product Ids
        selected_products:
          items:
            $ref: '#/components/schemas/EarnedMediaSelectedProduct'
          type: array
          maxItems: 8
          title: Selected Products
        press_room:
          anyOf:
          - $ref: '#/components/schemas/EarnedMediaPressRoom'
          - type: 'null'
      additionalProperties: true
      type: object
      title: EarnedMediaSourceContext
      description: Typed article grounding while retaining existing workspace context keys.
    EarnedMediaDraftRewriteRequest:
      properties:
        base_version:
          type: integer
          minimum: 1.0
          title: Base Version
        instruction:
          type: string
          maxLength: 2500
          minLength: 3
          title: Instruction
        scope:
          type: string
          enum:
          - full
          - section
          - selection
          title: Scope
          default: full
        selected_text:
          anyOf:
          - type: string
            maxLength: 12000
          - type: 'null'
          title: Selected Text
        section:
          anyOf:
          - type: string
            maxLength: 320
          - type: 'null'
          title: Section
        additional_evidence_ids:
          items:
            type: string
            maxLength: 200
            minLength: 1
          type: array
          maxItems: 40
          title: Additional Evidence Ids
      additionalProperties: false
      type: object
      required:
      - base_version
      - instruction
      title: EarnedMediaDraftRewriteRequest
    EarnedMediaProjectCreateRequest:
      properties:
        title:
          type: string
          maxLength: 220
          minLength: 3
          title: Title
        story_format:
          type: string
          enum:
          - press_release
          - bylined_article
          - journalist_pitch
          - local_story
          title: Story Format
          default: bylined_article
        objective:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Objective
        audience:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Audience
        market:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Market
        primary_angle:
          anyOf:
          - type: string
            maxLength: 2500
          - type: 'null'
          title: Primary Angle
        source_context:
          $ref: '#/components/schemas/EarnedMediaSourceContext'
      additionalProperties: false
      type: object
      required:
      - title
      title: EarnedMediaProjectCreateRequest
    EarnedMediaPressCoverageItem:
      properties:
        id:
          type: string
          maxLength: 80
          minLength: 1
          title: Id
        url:
          type: string
          maxLength: 2000
          minLength: 8
          title: Url
        title:
          type: string
          maxLength: 320
          minLength: 1
          title: Title
        outlet:
          type: string
          maxLength: 220
          title: Outlet
          default: ''
        summary:
          type: string
          maxLength: 600
          title: Summary
          default: ''
        published_on:
          type: string
          maxLength: 40
          title: Published On
          default: ''
        source_category:
          type: string
          maxLength: 64
          title: Source Category
          default: unknown
        independence:
          type: string
          maxLength: 32
          title: Independence
          default: unknown
        review_status:
          type: string
          enum:
          - suggested
          - verified
          - approved
          title: Review Status
          default: suggested
        discovered_at:
          type: string
          maxLength: 40
          title: Discovered At
          default: ''
        added_by:
          type: string
          maxLength: 16
          title: Added By
          default: ''
      additionalProperties: false
      type: object
      required:
      - id
      - url
      - title
      title: EarnedMediaPressCoverageItem
      description: A page that already exists about this brand.
    EarnedMediaPressRoomQuoteItem:
      properties:
        id:
          type: string
          maxLength: 80
          minLength: 1
          title: Id
        speaker_name:
          type: string
          maxLength: 220
          minLength: 1
          title: Speaker Name
        speaker_title:
          anyOf:
          - type: string
            maxLength: 220
          - type: 'null'
          title: Speaker Title
        quote:
          type: string
          maxLength: 2000
          minLength: 20
          title: Quote
        review_status:
          type: string
          enum:
          - suggested
          

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pomo/refs/heads/main/openapi/pomo-earned-media-api-openapi.yml