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

# Criar um cenário

> Guarda até 50 turnos como cenário, com as asserções que eles devem continuar passando; sem asserções, as sugeridas por regra.



## OpenAPI

````yaml openapi/pt/cell.json POST /v1/scenarios
openapi: 3.1.0
info:
  title: API de dados da Niadra
  version: '1'
  description: >-
    Escrita, contexto, histórico, objetos, identidade, privacidade e governança
    de um espaço. Cada espaço tem um endereço estável, com o espaço e a região
    no nome.
servers:
  - url: https://{space}.{region}.api.niadra.com
    variables:
      space:
        default: acme-prod
        description: O espaço, que vem na chave de fonte.
      region:
        default: us-east-2
        description: A região do espaço, que também vem na chave.
security: []
paths:
  /v1/scenarios:
    post:
      tags:
        - turns
      summary: Criar um cenário
      description: >-
        Guarda os turnos como cenário; sem asserções, as sugeridas por regra.


        **Autenticação.** Chave de fonte com o escopo `replay`, ou token de
        pessoa do Console com o papel `integration`, `security` (ou admin). Só
        responde num espaço com a funcionalidade `turns` ligada (o documento
        `features`); num espaço sem ela, 404.
      operationId: create_scenario_v1_scenarios_post
      parameters:
        - in: header
          name: Idempotency-Key
          required: true
          schema:
            maxLength: 256
            minLength: 1
            title: Idempotency-Key
            type: string
          description: >-
            Obrigatório. Guardado por 24 horas com o hash do corpo: a mesma
            chave com o mesmo corpo devolve a primeira resposta, e a mesma chave
            com outro corpo devolve 409 `conflict`.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScenarioCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scenario'
          description: O cenário.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: O pedido não bate com o contrato.
      security:
        - sourceKey: []
        - personToken: []
components:
  schemas:
    ScenarioCreate:
      additionalProperties: false
      description: >-
        Turnos guardados como cenário, com as asserções que eles precisam
        continuar passando; sem asserções, as sugeridas por regra a partir dos
        turnos.
      properties:
        assertions:
          items:
            $ref: '#/components/schemas/ReplayAssertion'
          maxItems: 50
          title: Assertions
          type: array
        name:
          maxLength: 256
          minLength: 1
          title: Name
          type: string
        turn_ids:
          items:
            pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$
            type: string
          maxItems: 50
          minItems: 1
          title: Turn Ids
          type: array
      required:
        - name
        - turn_ids
      title: ScenarioCreate
      type: object
    Scenario:
      additionalProperties: false
      properties:
        assertions:
          items:
            $ref: '#/components/schemas/ReplayAssertion'
          title: Assertions
          type: array
        created_at:
          format: date-time
          title: Created At
          type: string
        name:
          title: Name
          type: string
        origin:
          enum:
            - manual
            - report
          title: Origin
          type: string
        scenario_id:
          maxLength: 512
          minLength: 1
          title: Scenario Id
          type: string
        status:
          enum:
            - active
            - retired
          title: Status
          type: string
        turn_ids:
          items:
            pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$
            type: string
          title: Turn Ids
          type: array
        updated_at:
          format: date-time
          title: Updated At
          type: string
        version:
          description: Cresce a cada mudança do nome, das asserções ou do status.
          title: Version
          type: integer
      required:
        - scenario_id
        - name
        - origin
        - turn_ids
        - assertions
        - status
        - version
        - created_at
        - updated_at
      title: Scenario
      type: object
    Problem:
      additionalProperties: false
      description: >-
        Detalhes do problema no formato da RFC 9457; `code` vem do catálogo de
        erros versionado.
      properties:
        code:
          title: Code
          type: string
        detail:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Detail
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Request Id
        status:
          title: Status
          type: integer
        title:
          title: Title
          type: string
        type:
          default: about:blank
          title: Type
          type: string
      required:
        - title
        - status
        - code
      title: Problem
      type: object
    ReplayAssertion:
      additionalProperties: false
      description: >-
        Uma conferência estrutural sobre o registro do turno reproduzido,
        avaliada pelo executor. A especificação de replay fixa os `args` de cada
        tipo e como ele é avaliado; um tipo que o executor não consegue avaliar
        dá `not_checked`.
      properties:
        args:
          additionalProperties: true
          maxProperties: 20
          propertyNames:
            maxLength: 256
            minLength: 1
          title: Args
          type: object
        id:
          pattern: ^[a-z0-9][a-z0-9_.-]{0,63}$
          title: Id
          type: string
        kind:
          enum:
            - tool_called
            - tool_not_called
            - hard_respected
            - no_denial_with_results
            - claims_traced
            - claims_match_state
            - no_promise_without_action
            - expected_in_topk
            - handoff_when
            - effect_once
            - budget
            - lexicon
            - tools_offered_match
          title: Kind
          type: string
        suggested:
          default: false
          description: Sugerida por regra a partir do turno gravado.
          title: Suggested
          type: boolean
        turn_id:
          anyOf:
            - pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$
              type: string
            - type: 'null'
          description: O único turno do cenário a que ela se aplica; todos quando ausente.
          title: Turn Id
      required:
        - id
        - kind
      title: ReplayAssertion
      type: object
  securitySchemes:
    sourceKey:
      type: http
      scheme: bearer
      description: nia_sk_...
    personToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````