> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ohmyho.st/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For account actions, read https://ohmyho.st/skills/ohmyhost-get-started/SKILL.md and use the authenticated ohmyho.st CLI, local product MCP or supported remote OAuth MCP. Read the current project source binding before choosing GitHub or managed versions. Mintlify search only reads documentation. Preserve the customer’s selected project, environment and authentication provider; keep private application values in the portal or local stdin flow.

# Watch the columns of one table for data events

> Attaches the pgcf.capture trigger that publishes only the listed columns of the table as data events of one environment. Subscribe to the returned event_type with a database webhook. The request wakes a sleeping database. Repeating an identical request leaves the watch unchanged; repeating it with other columns or operations replaces the trigger. A reached Stop budget refuses with project_budget_exceeded (402). At most 100 watches exist per database.



## OpenAPI

````yaml /openapi.json post /v1/projects/{project_id}/database/watches
openapi: 3.1.2
info:
  title: ohmyho.st API
  version: 0.0.0
  description: >-
    Public REST API for ohmyho.st hosting, projects, domains, email, credits and
    exports.
servers:
  - url: https://app.ohmyho.st
    description: Production control API
  - url: https://dev.app.ohmyho.st
    description: Development control API
security:
  - BearerAuth: []
paths:
  /v1/projects/{project_id}/database/watches:
    post:
      summary: Watch the columns of one table for data events
      description: >-
        Attaches the pgcf.capture trigger that publishes only the listed columns
        of the table as data events of one environment. Subscribe to the
        returned event_type with a database webhook. The request wakes a
        sleeping database. Repeating an identical request leaves the watch
        unchanged; repeating it with other columns or operations replaces the
        trigger. A reached Stop budget refuses with project_budget_exceeded
        (402). At most 100 watches exist per database.
      operationId: createProjectDatabaseWatch
      parameters:
        - $ref: '#/components/parameters/RequestId'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatabaseWatchCreateRequest'
      responses:
        '201':
          description: The watch with the event type its deliveries carry.
          headers:
            Cache-Control:
              schema:
                type: string
                const: no-store
            Pragma:
              schema:
                type: string
                const: no-cache
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatabaseWatch'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '402':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
components:
  parameters:
    RequestId:
      name: X-Request-Id
      in: header
      description: Optional caller-provided correlation identifier.
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 128
    ProjectId:
      name: project_id
      in: path
      description: Project identifier.
      required: true
      schema:
        $ref: '#/components/schemas/Ulid'
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: Identifies one mutation and its canonical request payload.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  schemas:
    DatabaseWatchCreateRequest:
      type: object
      additionalProperties: false
      required:
        - environment
        - table
        - columns
      properties:
        environment:
          type: string
          enum:
            - dev
            - prod
        schema:
          type: string
          default: public
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
          description: >-
            Schema of the table, public when omitted. The schemas pgcf,
            ohmyhost, information_schema and pg_* cannot be watched.
        table:
          type: string
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
          description: >-
            Ordinary table owned by the application, created by a deployed
            migration.
        columns:
          type: array
          minItems: 1
          maxItems: 32
          uniqueItems: true
          description: >-
            Columns published with every event, exactly as written; names are
            case-sensitive.
          items:
            type: string
            pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
        operations:
          type: array
          minItems: 1
          maxItems: 3
          uniqueItems: true
          default:
            - insert
            - update
            - delete
          description: Row changes that publish an event; all three when omitted.
          items:
            type: string
            enum:
              - insert
              - update
              - delete
      examples:
        - environment: dev
          table: orders
          columns:
            - id
            - total
    DatabaseWatch:
      type: object
      additionalProperties: false
      required:
        - id
        - environment
        - schema
        - table
        - columns
        - operations
        - topic
        - event_type
      properties:
        id:
          type: string
          pattern: ^pgcf_watch_[0-9a-f]{8}$
        environment:
          type: string
          enum:
            - dev
            - prod
        schema:
          type: string
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
        table:
          type: string
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
        columns:
          type: array
          minItems: 1
          maxItems: 32
          items:
            type: string
            pattern: ^[A-Za-z_][A-Za-z0-9_]{0,62}$
        operations:
          type: array
          minItems: 1
          maxItems: 3
          items:
            type: string
            enum:
              - insert
              - update
              - delete
        topic:
          type: string
          pattern: ^[a-z][a-z0-9_]{0,47}$
          description: Topic of the watched table, derived by the platform from its name.
        event_type:
          type: string
          pattern: ^data\.[a-z][a-z0-9_]{0,47}$
          description: Event type of the rows of the table; pass it to a database webhook.
      examples:
        - id: pgcf_watch_0a1b2c3d
          environment: dev
          schema: public
          table: orders
          columns:
            - id
            - total
          operations:
            - insert
            - update
            - delete
          topic: orders
          event_type: data.orders
    Ulid:
      type: string
      pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    ProblemDetails:
      type: object
      description: RFC 9457 Problem Details extended with stable ohmyhost recovery fields.
      additionalProperties: false
      required:
        - type
        - title
        - status
        - code
        - request_id
        - retryable
        - suggested_action
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
          enum:
            - invalid_request
            - unauthenticated
            - forbidden
            - organization_required
            - resource_not_found
            - idempotency_key_reused
            - project_handle_unavailable
            - project_identity_unavailable
            - deployment_plan_expired
            - deployment_plan_incompatible
            - confirmation_expired
            - confirmation_invalid
            - etag_mismatch
            - promotion_source_stale
            - promotion_target_stale
            - promotion_invalid_target
            - mail_domain_conflict
            - mail_domain_required
            - mail_capacity_unavailable
            - storage_jurisdiction_conflict
            - shared_data_requires_promotion
            - production_deployment_required
            - framework_conversion_required
            - repository_configuration_missing
            - migration_filename_noncanonical
            - environment_secret_mutation_blocked
            - workers_runtime_incompatible
            - project_handle_invalid
            - project_handle_taken
            - project_handle_unchanged
            - project_rename_blocked
            - payload_too_large
            - rate_limited
            - insufficient_organization_credits
            - paid_plan_required
            - project_budget_exceeded
            - compute_performance_paid_required
            - compute_paid_required
            - compute_storage_shrink_requires_migration
            - compute_performance_unavailable
            - database_write_pending
            - database_access_limit
            - database_webhook_limit
            - database_schedule_limit
            - database_schedule_not_runnable
            - database_webhook_delivery_pending
            - database_watch_limit
            - database_watch_table_unavailable
            - database_watch_column_unavailable
            - database_watch_events_unavailable
            - database_watch_conflict
            - database_table_conflict
            - database_table_limit
            - compute_change_pending
            - compute_change_conflict
            - billing_purchase_conflict
            - billing_recharge_conflict
            - github_connection_required
            - github_connection_revoked
            - repository_not_installed
            - cloudflare_zone_not_bound
            - cloudflare_authorization_closed
            - project_notes_conflict
            - project_export_not_ready
            - powered_by_flag_required
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
            - source_commit_not_found
            - domain_hostname_taken
            - domain_dns_conflict
            - data_change_blocked
            - data_change_in_progress
            - data_change_not_applicable
            - rollback_target_data_changed
            - project_domain_delete_required
        request_id:
          type: string
          minLength: 1
          maxLength: 128
        retryable:
          type: boolean
        retry_after_seconds:
          type: integer
          minimum: 1
          maximum: 86400
          description: >-
            Optional machine-readable retry delay for a rate limit, matching
            Retry-After.
        suggested_action:
          type: string
          minLength: 1
  headers:
    XRequestId:
      description: Correlates the request with operations, events, logs, and audit records.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  responses:
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ResourceNotFound:
      description: >-
        The resource does not exist or is not visible to the authenticated
        principal.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            resourceNotFound:
              value:
                type: https://docs.ohmyho.st/errors/resource-not-found
                title: Resource not found
                status: 404
                code: resource_not_found
                request_id: req_01J00000000000000000000000
                retryable: false
                suggested_action: Check the resource identifier and your access scope.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        WorkOS access JWT or a user-owned WorkOS API key. User keys are bound to
        one organization and restricted to their enabled product permissions.
        Session-only onboarding and session revocation require an interactive
        access JWT. No cookie session is assumed.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.