> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-leet-slack-mcp-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Manually Managed App Resource

> Create a manually managed app resource tracked directly by ConductorOne under an existing resource type.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/apps/{app_id}/resource_types/{app_resource_type_id}/resources
openapi: 3.1.0
info:
  description: The C1 API is a HTTP API for managing C1 resources.
  title: C1 API
  version: 0.1.0-alpha
servers:
  - description: The C1 API server for the current tenant.
    url: https://{tenantDomain}.conductor.one
    variables:
      tenantDomain:
        default: example
        description: The domain of the tenant to use for this request.
security:
  - bearerAuth: []
    oauth: []
paths:
  /api/v1/apps/{app_id}/resource_types/{app_resource_type_id}/resources:
    post:
      tags:
        - App Resource
      summary: Create Manually Managed App Resource
      description: >-
        Create a manually managed app resource tracked directly by ConductorOne
        under an existing resource type.
      operationId: c1.api.app.v1.AppResourceService.CreateManuallyManagedAppResource
      parameters:
        - in: path
          name: app_id
          required: true
          schema:
            description: The ID of the app to create the resource under.
            type: string
        - in: path
          name: app_resource_type_id
          required: true
          schema:
            description: The resource type ID that classifies this resource.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.app.v1.CreateManuallyManagedAppResourceRequestInput
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.app.v1.CreateManuallyManagedAppResourceResponse
          description: The response message for creating a manually managed app resource.
      x-codeSamples:
        - lang: go
          label: CreateManuallyManagedAppResource
          source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/conductorone/conductorone-sdk-go/pkg/models/shared\"\n\tconductoronesdkgo \"github.com/conductorone/conductorone-sdk-go\"\n\t\"github.com/conductorone/conductorone-sdk-go/pkg/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := conductoronesdkgo.New(\n        conductoronesdkgo.WithSecurity(shared.Security{\n            BearerAuth: \"<YOUR_BEARER_TOKEN_HERE>\",\n            Oauth: \"<YOUR_OAUTH_HERE>\",\n        }),\n    )\n\n    res, err := s.AppResource.CreateManuallyManagedAppResource(ctx, operations.C1APIAppV1AppResourceServiceCreateManuallyManagedAppResourceRequest{\n        AppID: \"<id>\",\n        AppResourceTypeID: \"<id>\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.CreateManuallyManagedAppResourceResponse != nil {\n        // handle response\n    }\n}"
        - lang: typescript
          label: Typescript (SDK)
          source: >-
            import { ConductoroneSDKTypescript } from
            "conductorone-sdk-typescript";


            const conductoroneSDKTypescript = new ConductoroneSDKTypescript({
              security: {
                bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
                oauth: "<YOUR_OAUTH_HERE>",
              },
            });


            async function run() {
              const result = await conductoroneSDKTypescript.appResource.createManuallyManagedAppResource({
                appId: "<id>",
                appResourceTypeId: "<id>",
              });

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.app.v1.CreateManuallyManagedAppResourceRequestInput:
      description: The request message for creating a manually managed app resource.
      properties:
        annotations:
          additionalProperties:
            type: string
          description: |-
            Bounded key/value metadata bag for IaC marking and customer tags.
             See .rfcs/object-annotations.md §2. Limits: ≤16 entries; keys 1–128
             chars matching ^[A-Za-z][A-Za-z0-9._/-]{0,127}$; values 0–256 chars
             matching URL-safe ASCII; total serialized ≤4096 bytes. Keys starting
             with `c1/` are reserved for server-managed use and rejected on write.

             Well-known keys: `managed_by`, `iac_workspace`,
             `iac_resource_address`, `iac_tool_version`.
          type: object
          x-speakeasy-terraform-plan-modifier:
            imports:
              - >-
                github.com/conductorone/terraform-provider-conductorone/internal/annotations
            schemaDefinition: annotations.PlanModifier()
        description:
          description: An optional description for the new resource.
          type: string
        displayName:
          description: The display name for the new resource.
          type: string
        matchBatonId:
          description: >-
            If supplied, it's implied that the resource is created before sync
            and needs to be merged with connector resource.
          type: string
        resourceOwnerUserIds:
          description: C1 user IDs to assign as owners of this resource.
          items:
            type: string
          type:
            - array
            - 'null'
      required:
        - displayName
      title: Create Manually Managed App Resource Request
      type: object
      x-speakeasy-name-override: CreateManuallyManagedAppResourceRequest
    c1.api.app.v1.CreateManuallyManagedAppResourceResponse:
      description: The response message for creating a manually managed app resource.
      properties:
        appResource:
          oneOf:
            - $ref: '#/components/schemas/c1.api.app.v1.AppResource'
            - type: 'null'
      title: Create Manually Managed App Resource Response
      type: object
      x-speakeasy-name-override: CreateManuallyManagedAppResourceResponse
    c1.api.app.v1.AppResource:
      description: >
        The app resource message is a single resource that can have
        entitlements.


        This message contains a oneof named metadata. Only a single field of the
        following list may be set at a time:
          - secretTrait
      properties:
        accessConfigId:
          description: |-
            The access config ID for this resource. May be empty.
             Must be one of the builtin access config IDs or empty.
          type: string
        agentTrait:
          oneOf:
            - $ref: '#/components/schemas/c1.api.app.v1.AgentTrait'
            - type: 'null'
        annotations:
          additionalProperties:
            type: string
          description: |-
            Bounded key/value metadata bag for IaC marking and customer tags.
             See .rfcs/object-annotations.md §2. Limits: ≤16 entries; keys 1–128
             chars matching ^[A-Za-z][A-Za-z0-9._/-]{0,127}$; values 0–256 chars
             URL-safe ASCII; total serialized ≤ 4096 bytes. Keys matching ^c1/
             are reserved.

             Well-known keys: `managed_by`, `iac_workspace`,
             `iac_resource_address`, `iac_tool_version`.

             Most AppResources are connector-synced; user-supplied annotations on
             a synced resource will be overwritten by the next sync. The
             annotations bag is most useful on user-created groups (the
             `conductorone_app_resource` TF resource).
          type: object
          x-speakeasy-terraform-plan-modifier:
            imports:
              - >-
                github.com/conductorone/terraform-provider-conductorone/internal/annotations
            schemaDefinition: annotations.PlanModifier()
        appId:
          description: The app that this resource belongs to.
          type: string
        appResourceTypeId:
          description: The resource type that this resource is.
          type: string
        createdAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
        customDescription:
          description: A custom description that can be set for a resource.
          type: string
        deletedAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
        description:
          description: The description set for the resource.
          type: string
        displayName:
          description: The display name for this resource.
          type: string
        externalId:
          description: >-
            The upstream product's native external ID for this resource (e.g. an
            Okta group ID).
             Populated from the connector's external ID during sync.
          readOnly: true
          type: string
        grantCount:
          description: The number of grants to this resource.
          format: int64
          type: string
        id:
          description: The id of the resource.
          type: string
        matchBatonId:
          description: The matchBatonId field.
          type: string
        nhiDetail:
          description: |-
            Axis-2 detail refining nhi_type (e.g. "aws.role.lambda"). Read-only;
             translated from the model.
          readOnly: true
          type: string
        nhiType:
          description: |-
            The NHI classification (K3 spine) for this resource. Populated for
             non-human-identity resources; UNSPECIFIED for everything else. Mirrors
             agent_trait: read-only and translated from the model enum at the API boundary.
          enum:
            - NHI_TYPE_UNSPECIFIED
            - NHI_TYPE_APP_REGISTRATION
            - NHI_TYPE_ASSUMABLE_ROLE
            - NHI_TYPE_MANAGED_IDENTITY
          readOnly: true
          type: string
          x-speakeasy-unknown-values: allow
        parentAppResourceId:
          description: >-
            The parent resource id, if this resource is a child of another
            resource.
          type: string
        parentAppResourceTypeId:
          description: >-
            The parent resource type id, if this resource is a child of another
            resource.
          type: string
        profile:
          additionalProperties: true
          readOnly: true
          type:
            - object
            - 'null'
        secretTrait:
          oneOf:
            - $ref: '#/components/schemas/c1.api.app.v1.SecretTrait'
            - type: 'null'
        updatedAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
      title: App Resource
      type: object
      x-speakeasy-entity: App Resource
      x-speakeasy-name-override: AppResource
    c1.api.app.v1.AgentTrait:
      description: >-
        AgentTrait carries metadata for AI-agent resources surfaced in the
        Inventory.
      properties:
        identityAppUserId:
          description: >-
            The C1 app user ID of the service-account identity this agent
            authenticates as.
             Empty if the backing identity has not yet been resolved.
          type: string
        status:
          description: The agent's lifecycle status (READY, DISABLED, DELETED).
          enum:
            - AGENT_STATUS_UNSPECIFIED
            - AGENT_STATUS_READY
            - AGENT_STATUS_DISABLED
            - AGENT_STATUS_DELETED
          type: string
          x-speakeasy-unknown-values: allow
      title: Agent Trait
      type: object
      x-speakeasy-name-override: AgentTrait
    c1.api.app.v1.SecretTrait:
      description: The SecretTrait message.
      properties:
        createdByAppUserId:
          description: >-
            The AppUser id that created this credential. Read-only; resolved
            from
             the model during uplift. Distinct from identity_app_user_id (the
             holder) and from the resource's Owner (a separate assignment, not
             part of this message).
          type: string
        credentialDetail:
          description: >-
            Platform-specific credential subtype detail, finer than
            credential_type
             (e.g. "GCP service-account key"). Read-only; translated from the model.
          type: string
        identityAppUserId:
          description: The identityAppUserId field.
          type: string
        lastUsedAt:
          format: date-time
          type:
            - string
            - 'null'
        secretCreatedAt:
          format: date-time
          type:
            - string
            - 'null'
        secretExpiresAt:
          format: date-time
          type:
            - string
            - 'null'
      title: Secret Trait
      type: object
      x-speakeasy-name-override: SecretTrait
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    oauth:
      description: >-
        This API uses OAuth2 with the Client Credential flow.

        Client Credentials must be sent in the BODY, not the headers.

        For an example of how to implement this, refer to the
        [c1TokenSource.Token()](https://github.com/ConductorOne/conductorone-sdk-go/blob/3375fe7c0126d17e7ec4e711693dee7b791023aa/token_source.go#L101-L187)
        function.
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /auth/v1/token
      type: oauth2

````