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

# Create a resource in the registry

> Create a resource in the registry.




## OpenAPI

````yaml /api-reference/registry.yml post /sources/{sourceKey}/v1/resources/{resourceType}
openapi: 3.0.1
info:
  title: Registry API
  version: 1.0.0
servers:
  - url: https://api.{workspaceId}.clinia.cloud
    variables:
      workspaceId:
        default: ''
        description: The workspace id.
security:
  - apiKey: []
  - basicHttpAuth: []
  - bearerHttpAuth: []
tags:
  - name: Collections
    description: Management of collections in a registry.
  - name: Relationships
    description: Management of relationships in a registry.
  - name: Resources
    description: Management of resources in a registry.
paths:
  /sources/{sourceKey}/v1/resources/{resourceType}:
    post:
      tags:
        - Resources
      summary: Create a resource in the registry
      description: |
        Create a resource in the registry.
      operationId: CreateResource
      parameters:
        - name: sourceKey
          in: path
          description: The key of the source.
          required: true
          schema:
            type: string
        - name: resourceType
          in: path
          description: Type of the resource. Key of the profile.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createResourceRequest'
      responses:
        '201':
          description: A successful response when the resource was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1DomainResourceOperationResponse'
        '202':
          description: A successful response when a create resource task is accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1DomainResourceOperationResponse'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1RegistryError'
        '404':
          description: Returned when the source does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1RegistryError'
        '409':
          description: Returned when a resource with the same identifier already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1RegistryError'
        '413':
          $ref: '#/components/responses/v1PayloadTooLargeError'
        '429':
          $ref: '#/components/responses/v1TooManyRequestError'
        '504':
          $ref: '#/components/responses/v1GatewayTimeoutError'
components:
  schemas:
    createResourceRequest:
      allOf:
        - $ref: '#/components/schemas/v1CreateDomainResource'
    v1DomainResourceOperationResponse:
      allOf:
        - $ref: '#/components/schemas/v1SourceDomainResourceOperationResponse'
    v1RegistryError:
      allOf:
        - $ref: '#/components/schemas/v1Error'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/v1ErrorCode'
            applicationErrorCode:
              type: string
              enum:
                - REGISTRY_DUPLICATE_IDENTIFIER
                - REGISTRY_INVALID_COLLECTION_TYPE
                - REGISTRY_INVALID_CONTENT_TYPE
                - REGISTRY_INVALID_PIPELINE_STEP_DEFINITION
                - REGISTRY_INVALID_REQUEST_BODY
                - REGISTRY_INVALID_REVISION_ID
                - REGISTRY_PAYLOAD_PARSE_ERROR
                - REGISTRY_REQUIRED_FIELD_MISSING
                - REGISTRY_RESOURCE_TYPE_NOT_FOUND
                - REGISTRY_UNAVAILABLE_UPSTREAM_SERVICE
                - REGISTRY_BROWSE_SESSION_EXPIRED
                - REGISTRY_BULK_OPERATION_NOT_FOUND
                - REGISTRY_COLLECTION_NOT_FOUND
                - REGISTRY_CONTAINED_DEFINITION_NOT_FOUND
                - REGISTRY_PIPELINE_EXECUTION_NOT_FOUND
                - REGISTRY_PROFILE_NOT_FOUND
                - REGISTRY_PURGE_NOT_FOUND
                - REGISTRY_RELATIONSHIP_COLLECTION_NOT_FOUND
                - REGISTRY_RELATIONSHIP_DEFINITION_NOT_FOUND
                - REGISTRY_RELATIONSHIP_NOT_FOUND
                - REGISTRY_RESOURCE_NOT_FOUND
                - REGISTRY_RESOURCE_COLLECTION_NOT_FOUND
                - REGISTRY_SOURCE_NOT_FOUND
                - REGISTRY_TASK_NOT_FOUND
                - REGISTRY_VERSION_HISTORY_ITEM_NOT_FOUND
                - REGISTRY_REQUEST_CANCELLED
                - REGISTRY_REQUEST_TIMEOUT
                - REGISTRY_COLLECTION_ALREADY_EXISTS
                - REGISTRY_DUPLICATE_OPERATION_IN_BUNDLE
                - REGISTRY_IDENTIFIER_ALREADY_EXISTS
                - REGISTRY_RELATIONSHIP_ALREADY_EXISTS
                - REGISTRY_RELATIONSHIP_FROM_REF_ALREADY_EXISTS
                - REGISTRY_RELATIONSHIP_TO_REF_ALREADY_EXISTS
                - REGISTRY_RESOURCE_ALREADY_EXISTS
    v1CreateDomainResource:
      required:
        - data
      type: object
      properties:
        id:
          description: >
            Id of the resource (optional). When not provided or equal to the
            special `@rootId` token, the id will be generated. When provided and
            not equal to `@rootId`, id must follow pattern:
            `^[a-zA-Z0-9-][\w-]{1,92}$`. Note:
              - `@rootId` token can be used in any properties of type `reference` and, when provided, will be replaced by the actual id of the created resource.
          type: string
        data:
          type: object
          x-is-generic: true
          description: Dynamic data attributes, based on the resource type.
        meta:
          $ref: '#/components/schemas/v1Meta'
        contained:
          description: >-
            Resources contained in this top-level resource. Contained resources
            exists only within the context of this top-level resource.
          type: object
          additionalProperties:
            type: array
            items:
              type: object
              required:
                - type
                - data
              properties:
                id:
                  title: The id of the contained resource.
                  description: >
                    When provided, the id must follow the semantic of contained
                    resource ids (e.g. `clinic/1/healthService/1`).

                    The contained ids can be provided even if the top-level id
                    is not provided (or equal to `@rootId`). In those cases,

                    use the special `@rootId` token to refer to the top-level id
                    (e.g. `clinic/@rootId/healthService/1`).


                    If not provided, the id of the given contained will be
                    generated sequentially per contained key, starting at 1.

                    For instance, if there are 3 contained for the key
                    `healthService`, they will be generated in order as such:

                    [`clinic/1/healthService/1`, `clinic/1/healthService/2`,
                    `clinic/1/healthService/3`]


                    When some contained ids are provided and some are not, the
                    generated ids will still be sequential starting from 1,
                    ignoring collisions with provided ids.

                    For instance, if you insert 5 contained resources under the
                    same key `healthService` and only provide ids like such:

                    [`clinic/1/healthService/3`, <EMPTY>, <EMPTY>
                    `clinic/1/healthService/5`, `clinic/1/healthService/100`],
                    the outcome will be

                    [`clinic/1/healthService/3`, `clinic/1/healthService/1`,
                    `clinic/1/healthService/2`, `clinic/1/healthService/5`,
                    `clinic/1/healthService/100`].
                  type: string
                type:
                  description: Type of the resource.
                  type: string
                meta:
                  $ref: '#/components/schemas/v1Meta'
                data:
                  title: The dynamic attributes based on the resource type
                  type: object
                  x-is-generic: true
              additionalProperties: false
      additionalProperties: false
    v1SourceDomainResourceOperationResponse:
      oneOf:
        - $ref: >-
            #/components/schemas/v1SourceDomainResourcePersistedOperationResponse
        - $ref: '#/components/schemas/v1SourceDomainResourceAcceptedOperationResponse'
      discriminator:
        propertyName: status
        mapping:
          PERSISTED:
            $ref: >-
              #/components/schemas/v1SourceDomainResourcePersistedOperationResponse
          ACCEPTED:
            $ref: >-
              #/components/schemas/v1SourceDomainResourceAcceptedOperationResponse
    v1Error:
      type: object
      required:
        - code
        - message
        - type
      properties:
        code:
          $ref: '#/components/schemas/v1ErrorCode'
        message:
          type: string
        type:
          $ref: '#/components/schemas/v1ErrorType'
        details:
          description: list of errors that occurred if applicable.
          type: array
          items:
            $ref: '#/components/schemas/v1Error'
        additionalContext:
          type: object
          additionalProperties: true
    v1ErrorCode:
      type: integer
      format: int32
      enum:
        - 400
        - 401
        - 403
        - 404
        - 408
        - 409
        - 413
        - 429
        - 500
        - 501
        - 504
    v1Meta:
      type: object
      properties:
        createdAt:
          type: string
          description: Instant of creation of the resource.
          format: date-time
        identifier:
          type: array
          description: |
            Identifiers of the resource.
            Note: Combination of `source`, `value` and `use` must be unique.
          items:
            $ref: '#/components/schemas/v1Identifier'
        source:
          type: string
          description: The source of the resource.
          readOnly: true
        updatedAt:
          type: string
          description: Last update of the resource.
          format: date-time
      additionalProperties: false
    v1SourceDomainResourcePersistedOperationResponse:
      allOf:
        - $ref: '#/components/schemas/v1TaskSubmissionPersistedResponse'
        - type: object
          required:
            - resource
          properties:
            resource:
              $ref: '#/components/schemas/v1SourceDomainResource'
    v1SourceDomainResourceAcceptedOperationResponse:
      allOf:
        - $ref: '#/components/schemas/v1TaskSubmissionAcceptedResponse'
    v1ErrorType:
      type: string
      enum:
        - ALREADY_EXISTS
        - FAILED_PRECONDITION
        - INTERNAL
        - INVALID_ARGUMENT
        - NOT_FOUND
        - OUT_OF_RANGE
        - UNIMPLEMENTED
        - PERMISSION_DENIED
        - UNAUTHENTICATED
        - CONTENT_TOO_LARGE
        - REQUEST_TIMEOUT
        - TOO_MANY_REQUEST
        - GATEWAY_TIMEOUT
    v1Identifier:
      description: >-
        An identifier - identifies some entity uniquely and unambiguously.
        Typically this is used for business identifiers.
      properties:
        id:
          description: >-
            Unique id for the property within a resource (for internal
            references). This may be any string value that does not contain
            spaces.
          allOf:
            - $ref: '#/components/schemas/v1Symbol'
        system:
          description: >-
            Establishes the namespace for the value - that is, a URL that
            describes a set values that are unique.
          allOf:
            - $ref: '#/components/schemas/v1Uri'
        value:
          description: >-
            The portion of the identifier typically relevant to the user and
            which is unique within the context of the system.
          allOf:
            - $ref: '#/components/schemas/v1Symbol'
        use:
          description: The purpose of this identifier.
          allOf:
            - $ref: '#/components/schemas/v1Code'
        period:
          description: Time period when identifier was/is in use.
          allOf:
            - $ref: '#/components/schemas/v1Period'
      additionalProperties: false
    v1TaskSubmissionPersistedResponse:
      allOf:
        - $ref: '#/components/schemas/v1BaseTaskSubmissionResponse'
      description: >
        Response when a task has been executed synchronously and the results are
        immediately persisted.
    v1SourceDomainResource:
      type: object
      allOf:
        - $ref: '#/components/schemas/v1DomainResourceBase'
        - $ref: '#/components/schemas/v1SourceContainedResources'
    v1TaskSubmissionAcceptedResponse:
      allOf:
        - $ref: '#/components/schemas/v1BaseTaskSubmissionResponse'
      description: |
        Response when a task has been accepted for asynchronous processing.
        The task will be executed in the background.
    v1Symbol:
      pattern: ^[\s\S]+$
      type: string
      description: A sequence of Unicode characters.
    v1Uri:
      pattern: ^\S*$
      type: string
      description: String of characters used to identify a name or a resource.
    v1Code:
      pattern: ^[^\s]+( [^\s]+)*$
      type: string
      description: >-
        A string which has at least one character and no leading or trailing
        whitespace and where there is no whitespace other than single spaces in
        the contents.
    v1Period:
      type: object
      description: A time period defined by a start and end date and optionally time.
      properties:
        id:
          $ref: '#/components/schemas/v1Symbol'
          description: >-
            Unique id for the property within a resource (for internal
            references). This may be any string value that does not contain
            spaces.
        start:
          $ref: '#/components/schemas/v1DateTime'
          description: The start of the period. The boundary is inclusive.
        end:
          $ref: '#/components/schemas/v1DateTime'
          description: >-
            The end of the period. If the end of the period is missing, it means
            no end was known or planned at the time the instance was created.
            The start may be in the past, and the end date in the future, which
            means that period is expected/planned to end at that time.
      additionalProperties: false
    v1BaseTaskSubmissionResponse:
      type: object
      required:
        - status
        - taskId
      properties:
        taskId:
          $ref: '#/components/schemas/v1TaskId'
          readOnly: true
        status:
          $ref: '#/components/schemas/v1TaskSubmissionStatus'
          readOnly: true
    v1DomainResourceBase:
      required:
        - id
        - type
        - data
      type: object
      properties:
        id:
          title: The logical identifier
          type: string
          readOnly: true
        type:
          description: Type of the resource.
          type: string
          readOnly: true
        meta:
          $ref: '#/components/schemas/v1Meta'
        data:
          title: The dynamic attributes based on the resource type
          type: object
          x-is-generic: true
      additionalProperties: false
    v1SourceContainedResources:
      type: object
      properties:
        contained:
          description: >-
            Resources contained in this top-level resource. Contained resources
            exists only within the context of this top-level resource.
          type: object
          additionalProperties:
            type: array
            items:
              allOf:
                - $ref: '#/components/schemas/v1SourceResource'
      additionalProperties: false
    v1DateTime:
      pattern: >-
        ^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]{1,9})?)?)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)?)?)?$
      type: string
      description: >-
        A date, date-time or partial date (e.g. just year or year + month).  If
        hours and minutes are specified, a time zone SHALL be populated. The
        format is a union of the schema types gYear, gYearMonth, date and
        dateTime. Seconds must be provided due to schema type constraints but
        may be zero-filled and may be ignored. Dates SHALL be valid dates.
    v1TaskId:
      type: string
      description: >
        The task identifier. Used to track an async task in the system. Use the
        task ID to poll for completion status.

        The taskId holds different prefix to represent different tasks.

        - oneOf task: `s_<id>`.

        - bulk task: `bk_<id>` (deprecated: `<id>` only).

        - bundle task: `bd_<id>` (deprecated: `<id>` only).

        - purge task: `pg_<id>` (deprecated: `purge:<id>`).
    v1TaskSubmissionStatus:
      type: string
      description: >
        Status of the task submission.

        * `ACCEPTED`: The task has been accepted for asynchronous processing.
        The task will be executed in the background.

        * `PERSISTED`: The task has been executed synchronously and the results
        are immediately persisted.
      enum:
        - ACCEPTED
        - PERSISTED
    v1SourceResource:
      allOf:
        - $ref: '#/components/schemas/v1Resource'
    v1Resource:
      required:
        - id
        - type
        - data
      type: object
      properties:
        id:
          title: The logical identifier
          type: string
        type:
          description: Type of the resource.
          type: string
        meta:
          $ref: '#/components/schemas/v1Meta'
        data:
          title: The dynamic attributes based on the resource type
          type: object
          x-is-generic: true
      additionalProperties: false
  responses:
    v1PayloadTooLargeError:
      description: Returned when the payload exceeds the max content size (100kB).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/v1Error'
    v1TooManyRequestError:
      description: Returned when the server starts throttling the requests.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/v1Error'
    v1GatewayTimeoutError:
      description: Returned when the request exceeds the server timeout window.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/v1Error'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Clinia-API-Key
    basicHttpAuth:
      description: Basic HTTP authentication.
      type: http
      scheme: basic
    bearerHttpAuth:
      description: JWT Bearer authentication.
      type: http
      scheme: Bearer
      bearerFormat: JWT

````