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

# List community standards

> Browse all published community standards/movements. No authentication required.

Community standards are curated, named policy bundles — like *Four Norms* from The Anxious Generation
— that a family can adopt for a child in one call instead of hand-picking rules. This endpoint is
**public** and lists every published standard with its rules inline.

```bash theme={null}
curl https://phosra-api-sandbox-production.up.railway.app/api/v1/standards
```

```json Example response (live sandbox, truncated) theme={null}
[
  {
    "slug": "four-norms",
    "name": "Four Norms",
    "organization": "The Anxious Generation",
    "description": "Jonathan Haidt's four foundational norms for a phone-free childhood.",
    "version": "1.0",
    "min_age": 0,
    "max_age": 16,
    "rules": [ { "category": "social_media_min_age", "label": "No social media before 16" } ]
  }
]
```

Adopt one for a child with [Adopt a standard](/api-reference/standards/adopt-standard).


## OpenAPI

````yaml GET /standards
openapi: 3.1.0
info:
  title: Phosra API
  description: Universal Parental Controls API - Define once, push everywhere
  version: 1.0.0
  contact:
    name: Phosra Developer Support
    url: https://docs.phosra.com
  license:
    name: Proprietary
    url: https://phosra.com/terms
servers:
  - url: https://phosra-api-sandbox-production.up.railway.app/api/v1
    description: >-
      Hosted sandbox — the one canonical, stable, partner-facing testing
      endpoint (seeded demo family + phosra_test_ keys). Default so the inline
      Try it never touches production. Same base the CLI uses.
  - url: https://prodapi.phosra.com/api/v1
    description: Production
  - url: http://localhost:8080/api/v1
    description: Local development
security:
  - BearerAuth: []
paths:
  /standards:
    get:
      tags:
        - Standards
      summary: List published community standards
      description: >-
        Browse all published community standards/movements. No authentication
        required.
      operationId: listPublishedCommunityStandards
      responses:
        '200':
          description: Standards list
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Standard'
              example:
                - id: f42e8ef8-7534-4cd1-82fa-eff3fbf818e2
                  slug: four-norms
                  name: Four Norms
                  organization: The Anxious Generation
                  description: >-
                    Jonathan Haidt's four foundational norms for a phone-free
                    childhood.
                  long_description: >-
                    Based on The Anxious Generation by Jonathan Haidt, the Four
                    Norms represent a research-backed framework for protecting
                    children from the harms of smartphone-based childhood.
                  version: '1.0'
                  published: true
                  min_age: 0
                  max_age: 16
                  channel: stable
                  source: {}
                  co_branding: {}
                  sort_order: 0
                  adoption_count: 0
                  rules:
                    - id: 6bc9d15e-31ea-4fce-adf2-a8a8870cc32e
                      standard_id: f42e8ef8-7534-4cd1-82fa-eff3fbf818e2
                      category: social_media_min_age
                      label: No social media until age 16
                      enabled: true
                      config:
                        min_age: 16
                      kind: enforced
                      sort_order: 1
                    - id: 904e43dc-ef21-454c-9efc-cac10f8ab897
                      standard_id: f42e8ef8-7534-4cd1-82fa-eff3fbf818e2
                      category: privacy_account_creation
                      label: No smartphones until age 14
                      enabled: true
                      config:
                        min_age: 14
                      kind: enforced
                      sort_order: 2
                    - id: ad36b403-a8a0-4697-bb5b-c67c5332e312
                      standard_id: f42e8ef8-7534-4cd1-82fa-eff3fbf818e2
                      category: time_scheduled_hours
                      label: Phone-free schools
                      enabled: true
                      config:
                        blocked_during: school_hours
                      kind: enforced
                      sort_order: 3
                    - id: 646309f4-c716-4607-891e-29a73b1e1234
                      standard_id: f42e8ef8-7534-4cd1-82fa-eff3fbf818e2
                      category: time_daily_limit
                      label: More outdoor play
                      enabled: true
                      config:
                        outdoor_minimum_minutes: 120
                      kind: enforced
                      sort_order: 4
                  created_at: '2026-06-15T03:04:56.429142Z'
                  updated_at: '2026-06-15T03:04:56.429142Z'
                - id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                  slug: screen-smart-family
                  name: Screen-Smart Family
                  organization: Phosra
                  description: >-
                    Phosra's recommended baseline for balanced screen time and
                    online safety.
                  long_description: >-
                    The Screen-Smart Family standard is Phosra's own curated
                    best-practice ruleset, designed by child development experts
                    and informed by current legislation.
                  version: '1.0'
                  published: true
                  min_age: 0
                  max_age: 17
                  channel: stable
                  source: {}
                  co_branding: {}
                  sort_order: 0
                  adoption_count: 0
                  rules:
                    - id: a01f0637-61a2-4bba-aef4-de7d057377b4
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: time_daily_limit
                      label: Daily screen time
                      enabled: true
                      config:
                        adaptive: true
                      kind: enforced
                      sort_order: 1
                    - id: af078ce1-caed-4013-96b9-d7460989c99d
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: content_rating
                      label: Content ratings
                      enabled: true
                      config:
                        level: age_appropriate
                      kind: enforced
                      sort_order: 2
                    - id: 22ad722a-6f0d-41bc-a77d-4680b6e1b3af
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: web_safesearch
                      label: Safe search
                      enabled: true
                      config:
                        enforced: true
                      kind: enforced
                      sort_order: 3
                    - id: f52fdbb2-56a9-4b9d-8974-11b1cb9ae54c
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: social_chat_control
                      label: Chat controls
                      enabled: true
                      config:
                        mode: known_contacts_only
                      kind: enforced
                      sort_order: 4
                    - id: 1e9779a7-848c-452b-92f2-816f3fc519f3
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: purchase_approval
                      label: Purchase approval
                      enabled: true
                      config:
                        required: true
                      kind: enforced
                      sort_order: 5
                    - id: 33716301-f55a-4d1b-ae4b-e1494ad59777
                      standard_id: 0890eafb-0a61-46f3-8e9a-21a6e10cf33f
                      category: privacy_data_sharing
                      label: Data sharing
                      enabled: true
                      config:
                        level: minimal
                      kind: enforced
                      sort_order: 6
                  created_at: '2026-06-15T03:04:56.429142Z'
                  updated_at: '2026-06-15T03:04:56.429142Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
      security: []
      x-codeSamples:
        - lang: JavaScript
          label: SDK (@phosra/sdk)
          source: |
            import { PhosraClient } from "@phosra/sdk";

            const phosra = new PhosraClient({
              baseUrl: "https://phosra-api-sandbox-production.up.railway.app/api/v1",
              accessToken: process.env.PHOSRA_API_KEY,
            });

            const result = await phosra.standards.list();
            console.log(result);
        - lang: Shell
          label: cURL
          source: >
            curl -sS
            "https://phosra-api-sandbox-production.up.railway.app/api/v1/standards"
        - lang: Python
          label: Python
          source: |
            import requests

            BASE = "https://phosra-api-sandbox-production.up.railway.app/api/v1"
            res = requests.get(
                f"{BASE}/standards",
            )
            print(res.status_code, res.json())
        - lang: Go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tbase := \"https://phosra-api-sandbox-production.up.railway.app/api/v1\"\n\treq, _ := http.NewRequest(\"GET\", base+\"/standards\", nil)\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n\tout, _ := io.ReadAll(resp.Body)\n\tfmt.Println(resp.Status, string(out))\n}\n"
components:
  schemas:
    Standard:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for this resource.
        slug:
          type: string
          description: URL-safe stable identifier.
        name:
          type: string
          description: Human-readable display name.
        organization:
          type: string
          description: Name of the organization that publishes this standard.
        description:
          type: string
          description: Human-readable description.
        long_description:
          type: string
          description: >-
            Extended multi-paragraph description shown on the standard detail
            page.
        icon_url:
          type: string
          description: URL of the platform or resource icon.
        version:
          type: string
          description: Monotonically increasing version, bumped on every change.
        published:
          type: boolean
          description: Whether this standard is published and adoptable by families.
        min_age:
          type:
            - integer
            - 'null'
          description: Minimum age (in years) this tier is appropriate for.
        max_age:
          type:
            - integer
            - 'null'
          description: >-
            Upper age bound (in years) this standard is intended for; null if
            open-ended.
        adoption_count:
          type: integer
          description: Number of families that have adopted this standard.
        rules:
          type: array
          items:
            $ref: '#/components/schemas/StandardRule'
          description: List of rules.
        created_at:
          type: string
          format: date-time
          description: RFC 3339 timestamp of when the resource was created.
        updated_at:
          type: string
          format: date-time
          description: RFC 3339 timestamp of the resource's most recent update.
      additionalProperties: true
    StandardRule:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for this resource.
        standard_id:
          type: string
          format: uuid
          description: Unique identifier (UUID) for the related resource.
        category:
          $ref: '#/components/schemas/RuleCategory'
        label:
          type: string
          description: Human-readable label describing what this rule enforces.
        enabled:
          type: boolean
          description: Whether this item is currently active.
        config:
          type: object
          description: Category-specific configuration object for this rule.
          additionalProperties: true
        sort_order:
          type: integer
          description: Position of this rule within the standard, lowest first.
      additionalProperties: true
    Error:
      type: object
      properties:
        error:
          type: string
          description: >-
            Short, stable, machine-readable error class — matches the HTTP
            status text (e.g. `Not Found`).
        message:
          type: string
          description: >-
            Human-readable explanation of what went wrong and, where possible,
            how to fix it.
        code:
          type: integer
          description: Numeric HTTP status code, duplicated in the body for convenience.
      description: Standard error envelope returned for every 4xx and 5xx response.
      example:
        error: Not Found
        message: policy not found
        code: 404
      additionalProperties: true
    RuleCategory:
      type: string
      description: >-
        One of the 123 OCSS rule categories (accepted and signed by the census;
        capability varies — see the Rule Categories reference).
      enum:
        - rating_age_gate
        - age_gate
        - adult_site_av_required
        - app_store_age_attestation
        - os_age_signal_ingest
        - age_signal_broadcast
        - hard_id_verification_escalation
        - social_media_min_age
        - ai_chatbot_age_assertion
        - teen_minimum_age_16_gate
        - content_rating
        - violence_threshold
        - sexual_content_threshold
        - profanity_threshold
        - commercial_pressure_threshold
        - substance_content_threshold
        - recognized_seal_allowlist
        - social_chat_control
        - web_filter_level
        - privacy_rating_tier_gate
        - privacy_rating_score_threshold
        - privacy_rating_dimension_gate
        - privacy_seal_required
        - unrated_privacy_default
        - ai_chatbot_tier_gate
        - ai_product_classification_gate
        - ai_safety_rating_threshold
        - ai_data_responsibility_rating_threshold
        - ai_transparency_rating_threshold
        - ai_minor_interaction
        - streaming_age_rating_enforce
        - ugc_world_age_gate
        - time_daily_limit
        - time_scheduled_hours
        - time_per_app_limit
        - time_downtime
        - phone_free_school_hours
        - purchase_approval
        - purchase_spending_cap
        - social_contacts
        - social_multiplayer
        - stranger_outreach_friction
        - privacy_account_creation
        - parental_consent_gate
        - notification_curfew
        - dumbphone_migration_mode
        - content_block_title
        - content_allow_title
        - content_allowlist_mode
        - content_descriptor_block
        - firearm_content_block
        - not_for_minors_block
        - purchase_block_iap
        - stranger_dm_block
        - web_safesearch
        - web_category_block
        - web_custom_allowlist
        - web_custom_blocklist
        - dm_restriction
        - ai_no_simulated_companionship
        - ai_no_unsupervised_therapy
        - ai_no_self_harm_promotion
        - ai_no_csam_generation
        - ai_no_personhood_deception
        - ai_companion_block
        - library_filter_compliance
        - gambling_mechanics_block
        - addictive_pattern_block
        - app_install_block
        - voice_chat_minor_limit
        - educational_credit
        - monitoring_activity
        - monitoring_alerts
        - social_account_content_monitoring
        - message_content_monitoring
        - image_content_monitoring
        - search_query_monitoring
        - flagged_content_digest
        - usage_timer_notification
        - parental_event_notification
        - screen_time_report
        - social_media_warning_label_render
        - digital_literacy_curriculum_link
        - school_alert_routing
        - privacy_location
        - privacy_profile_visibility
        - privacy_data_sharing
        - data_minimization_enforce
        - third_party_tracker_block
        - geolocation_precision_cap
        - targeted_ad_block
        - data_deletion_request
        - geolocation_opt_in
        - ai_training_data_opt_out
        - image_rights_minor
        - student_privacy_school_mode
        - commercial_data_ban
        - prosocial_weight
        - role_model_weight
        - representation_weight
        - dpia_request_generator
        - algo_feed_control
        - addictive_design_control
        - infinite_scroll_block
        - autoplay_disable
        - ai_no_engagement_dark_patterns
        - ai_synthetic_media_disclosure
        - algorithmic_audit
        - cipa_filter_attestation
        - minor_data_sale_audit_log
        - parental_attestation_cert
        - ai_toy_safety_cert
        - csam_reporting
        - esafety_commission_reporting
        - platform_liability_evidence_capture
        - age_appropriate_profile_mode
        - ncii_takedown
        - ephemeral_message_disable
        - dm_feature_disable
        - named_contact_block
        - crisis_resource_surface
        - presence_status_hide
        - harm_report_intake
  responses:
    Unauthorized:
      description: >-
        Authentication failed. Send a Bearer WorkOS JWT, or a
        `phosra_live_`/`phosra_test_` developer API key, in the `Authorization`
        header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized
            message: missing or invalid Authorization header
            code: 401
    RateLimited:
      description: >-
        Too many requests. Back off and retry after the interval given in the
        `Retry-After` response header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Too Many Requests
            message: rate limit exceeded
            code: 429
    ServerError:
      description: >-
        An unexpected error occurred inside Phosra. The request is safe to retry
        with exponential backoff; contact support if it persists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Internal Server Error
            message: internal error
            code: 500
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````