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

# Create or patch entity

> Creates or updates an entity using OpenAPI. If the YAML refers to an entity that already exists (as referenced by the `x-cortex-tag`), this API will merge the specified changes into the existing entity.



## OpenAPI

````yaml /openapi/cortex_swagger.json patch /api/v1/open-api
openapi: 3.0.1
info:
  description: >-
    The Cortex REST API provides programmatic access to the data in the catalog,
    Scorecards, and more.
  title: Cortex API
  version: v1
servers:
  - url: https://api.getcortexapp.com
    description: Cortex Cloud API host
security:
  - bearerAuth: []
tags:
  - name: API Keys
  - name: Audit Logs
  - name: Catalog Entities
  - name: Catalogs
  - name: Custom Data
  - name: Custom Data [Advanced]
  - name: Custom Events
  - name: Custom Metrics
  - name: Dependencies
  - name: Deploys
  - name: Discovery Audit
  - name: Docs
  - name: 'Eng Intel: 1-Registry'
  - name: 'Eng Intel: 2-Metrics'
  - name: 'Eng Intel: 3-Trace'
  - name: 'Eng Intel: User Labels'
  - name: Entity Relationship Types
  - name: Entity Relationships
  - name: Entity Types
  - name: GitOps Logs
  - name: Groups
  - name: IP Allowlist
  - name: Initiatives
  - name: My Workspace
  - name: Notification Logs
  - name: On-call
  - name: Packages
  - name: Plugins
  - name: Queries
  - name: SCIM
  - name: Scaffolder
  - name: Scorecards
  - name: Secrets
  - name: Team Roles
  - name: Teams
  - name: Teams Hierarchies
  - name: Teams [Advanced]
  - name: Teams [Departments] (legacy)
  - name: Users
  - name: Verifications
  - name: Workflows
  - name: '[Integrations] AWS'
  - name: '[Integrations] Anthropic'
  - name: '[Integrations] Apiiro'
  - name: '[Integrations] ArgoCD'
  - name: '[Integrations] Azure Active Directory'
  - name: '[Integrations] Azure Devops'
  - name: '[Integrations] Azure Resources'
  - name: '[Integrations] BambooHR'
  - name: '[Integrations] Bitbucket'
  - name: '[Integrations] Bugsnag'
  - name: '[Integrations] Buildkite'
  - name: '[Integrations] Checkmarx SAST'
  - name: '[Integrations] CircleCI'
  - name: '[Integrations] ClickUp'
  - name: '[Integrations] Codecov'
  - name: '[Integrations] Coralogix'
  - name: '[Integrations] Datadog'
  - name: '[Integrations] Dynatrace'
  - name: '[Integrations] Firehydrant'
  - name: '[Integrations] GitHub'
  - name: '[Integrations] GitLab'
  - name: '[Integrations] Harness'
  - name: '[Integrations] Incident.io'
  - name: '[Integrations] Instana'
  - name: '[Integrations] Jenkins'
  - name: '[Integrations] Jira'
  - name: '[Integrations] Kubernetes'
  - name: '[Integrations] LaunchDarkly'
  - name: '[Integrations] Lightstep'
  - name: '[Integrations] Mend SAST'
  - name: '[Integrations] Mend SCA'
  - name: '[Integrations] New Relic'
  - name: '[Integrations] Okta'
  - name: '[Integrations] Opsgenie'
  - name: '[Integrations] PagerDuty'
  - name: '[Integrations] Prometheus'
  - name: '[Integrations] Rollbar'
  - name: '[Integrations] Rootly'
  - name: '[Integrations] Semgrep'
  - name: '[Integrations] Sentry'
  - name: '[Integrations] ServiceNow'
  - name: '[Integrations] SignalFx'
  - name: '[Integrations] Snyk'
  - name: '[Integrations] SonarQube'
  - name: '[Integrations] SumoLogic'
  - name: '[Integrations] Veracode'
  - name: '[Integrations] VictorOps'
  - name: '[Integrations] Wiz'
  - name: '[Integrations] Workday'
  - name: '[Integrations] xMatters'
  - name: dev-login-controller
  - name: public-scim-schema-controller
paths:
  /api/v1/open-api:
    patch:
      tags:
        - Catalog Entities
      summary: Create or patch entity
      description: >-
        Creates or updates an entity using OpenAPI. If the YAML refers to an
        entity that already exists (as referenced by the `x-cortex-tag`), this
        API will merge the specified changes into the existing entity.
      operationId: createOrPatchEntity
      parameters:
        - description: >-
            When true, this endpoint only validates the descriptor contents and
            returns any errors or warnings.
          in: query
          name: dryRun
          required: false
          schema:
            type: boolean
        - description: >-
            Delete keys with this value from the merged yaml, e.g. `__delete__`,
            if any values match this, they will not be included in merged YAML.
            For example `my_value: __delete__` will remove `my_value` from the
            merged YAML.
          in: query
          name: deleteMarkerValue
          required: false
          schema:
            type: string
        - description: >-
            Default merge behavior is to replace arrays, set this to true to
            append arrays instead. For simple types, duplicate values will be
            removed from the merged array.
          in: query
          name: appendArrays
          required: false
          schema:
            type: boolean
        - description: >-
            Default behavior is to upsert the entity, set
            `failIfEntityDoesNotExist=true` to fail (404) if the entity
            specified in `x-cortex-tag` does not exist.
          in: query
          name: failIfEntityDoesNotExist
          required: false
          schema:
            type: boolean
        - description: >-
            Maximum time (milliseconds) to wait for asynchronous property
            updates. Default is zero.
          in: query
          name: asyncUpdateWaitTimeMs
          required: false
          schema:
            type: integer
            format: int64
      requestBody:
        content:
          application/openapi;charset=UTF-8:
            schema:
              type: string
        description: |-
          Raw text of the YAML  
           See examples of cortex.yaml files for each entity type [here](https://docs.cortex.io/docs/reference/basics/entities#example-cortexyaml-for-service-entity)
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenApiResponse'
          description: >-
            Indicates that the entity body was accepted, and the referenced
            `x-cortex-tag` existed and patched successfully
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenApiResponse'
          description: >-
            Indicates that the entity body was accepted, and the referenced
            `x-cortex-tag` did not exist and was created successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenApiResponse'
          description: Invalid YAML (major errors or incorrectly formatted YAML)
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenApiResponse'
          description: >-
            Specified entity does not exist (when failIfDoesNotExist is set to
            true)
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    OpenApiResponse:
      required:
        - ok
        - violations
      type: object
      properties:
        ok:
          type: boolean
        violations:
          type: array
          items:
            $ref: '#/components/schemas/ViolationDTO'
    ViolationDTO:
      required:
        - paths
      type: object
      properties:
        description:
          type: string
        endLine:
          type: integer
          format: int32
        paths:
          type: array
          items:
            type: string
        pointer:
          type: string
        ruleLink:
          type: string
        startLine:
          type: integer
          format: int32
        title:
          type: string
        violationType:
          type: string
          enum:
            - MUST
            - SHOULD
            - MAY
            - HINT
    TooManyRequestsProblemDetail:
      required:
        - type
        - title
        - status
      type: object
      properties:
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        retryAfter:
          minimum: 0
          type: integer
          description: The number of seconds until the rate limiting resets.
          format: int32
        status:
          maximum: 599
          minimum: 100
          type: integer
          format: int32
          enum:
            - 429
        title:
          type: string
        type:
          type: string
          format: uri-reference
  responses:
    TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetail'
      description: >-
        The client has exceeded the rate limit by performing too many requests
        in a short period. Retry the request after a delay.
      headers:
        Retry-After:
          description: The number of seconds until the rate limiting resets.
          schema:
            minimum: 0
            type: integer
            format: int32
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: >-
        All requests to the Cortex API need to provide an `Authorization: Bearer
        <token>` header, where `<token>` is an API key created in the Settings
        page of your workspace.
      scheme: bearer
      type: http

````

## Related topics

- [Provision EC2 instance with Terraform](/guides/production-readiness/terraform/provision.md)
- [Viewing and managing ownership](/ingesting-data-into-cortex/entities-overview/entities/ownership/viewing-and-managing-ownership.md)
- [Catalog Entities](/api/rest/catalog-entities.md)
