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

# Create

> Create a directory.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/directories
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/directories:
    post:
      tags:
        - Directory
      summary: Create
      description: Create a directory.
      operationId: c1.api.directory.v1.DirectoryService.Create
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.directory.v1.DirectoryServiceCreateRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.directory.v1.DirectoryServiceCreateResponse
          description: The DirectoryServiceCreateResponse message.
      x-codeSamples:
        - lang: go
          label: Create
          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\"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.Directory.Create(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.DirectoryServiceCreateResponse != 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.directory.create();

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.directory.v1.DirectoryServiceCreateRequest:
      description: >
        Uplevel an app into a full directory.


        This message contains a oneof named account_filter. Only a single field
        of the following list may be set at a time:
          - all
          - celExpression
      properties:
        all:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryAccountFilterAll'
        appId:
          description: >-
            The AppID to make into a directory, providing identities and more
            for the C1 app.
          readOnly: false
          type: string
        celExpression:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryAccountFilterCel'
        expandMask:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryExpandMask'
        mergeConfig:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryMergeConfig'
      title: Directory Service Create Request
      type: object
      x-speakeasy-name-override: DirectoryServiceCreateRequest
    c1.api.directory.v1.DirectoryServiceCreateResponse:
      description: The DirectoryServiceCreateResponse message.
      properties:
        directoryView:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryView'
        expanded:
          description: List of serialized related objects.
          items:
            additionalProperties: true
            description: >-
              Contains an arbitrary serialized message along with a @type that
              describes the type of the serialized message.
            properties:
              '@type':
                description: The type of the serialized message.
                type: string
            readOnly: false
            type: object
          nullable: true
          readOnly: false
          type: array
      title: Directory Service Create Response
      type: object
      x-speakeasy-name-override: DirectoryServiceCreateResponse
    c1.api.directory.v1.DirectoryAccountFilterAll:
      description: The DirectoryAccountFilterAll message.
      nullable: true
      title: Directory Account Filter All
      type: object
      x-speakeasy-name-override: DirectoryAccountFilterAll
    c1.api.directory.v1.DirectoryAccountFilterCel:
      description: The DirectoryAccountFilterCel message.
      nullable: true
      properties:
        expression:
          description: The expression field.
          readOnly: false
          type: string
      title: Directory Account Filter Cel
      type: object
      x-speakeasy-name-override: DirectoryAccountFilterCel
    c1.api.directory.v1.DirectoryExpandMask:
      description: The fields to be included in the directory response.
      properties:
        paths:
          description: An array of fields to be included in the directory response.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
      title: Directory Expand Mask
      type: object
      x-speakeasy-name-override: DirectoryExpandMask
    c1.api.directory.v1.DirectoryMergeConfig:
      description: >-
        DirectoryMergeConfig configures how AppUsers from this directory are
        matched to C1 Users.
      properties:
        matchCases:
          description: Ordered list of match cases evaluated in sequence. First match wins.
          items:
            $ref: '#/components/schemas/c1.api.directory.v1.DirectoryMergeMatchCase'
          nullable: true
          readOnly: false
          type: array
      title: Directory Merge Config
      type: object
      x-speakeasy-name-override: DirectoryMergeConfig
    c1.api.directory.v1.DirectoryView:
      description: >-
        The directory view contains a directory and an app_path which is a
        JSONPATH set to the location in the expand mask that the expanded app
        will live if requested by the expander.
      properties:
        appPath:
          description: >-
            JSONPATH expression indicating the location of the App object in the
            array.
          readOnly: false
          type: string
        directory:
          $ref: '#/components/schemas/c1.api.directory.v1.Directory'
      title: Directory View
      type: object
      x-speakeasy-name-override: DirectoryView
    c1.api.directory.v1.DirectoryMergeMatchCase:
      description: >-
        DirectoryMergeMatchCase defines a pair of CEL key extractors for
        matching.
      properties:
        appUserKeyCel:
          description: CEL expression evaluated against an AppUser to produce match key(s).
          readOnly: false
          type: string
        userKeyCel:
          description: CEL expression evaluated against a User to produce match key(s).
          readOnly: false
          type: string
      title: Directory Merge Match Case
      type: object
      x-speakeasy-name-override: DirectoryMergeMatchCase
    c1.api.directory.v1.Directory:
      description: >
        This object indicates that an app is also a directory.


        This message contains a oneof named account_filter. Only a single field
        of the following list may be set at a time:
          - all
          - celExpression
      properties:
        all:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryAccountFilterAll'
        appId:
          description: The ID of the app associated with the directory.
          readOnly: true
          type: string
        celExpression:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryAccountFilterCel'
        createdAt:
          format: date-time
          readOnly: true
          type: string
        deletedAt:
          format: date-time
          readOnly: true
          type: string
        mergeConfig:
          $ref: '#/components/schemas/c1.api.directory.v1.DirectoryMergeConfig'
        updatedAt:
          format: date-time
          readOnly: true
          type: string
      title: Directory
      type: object
      x-speakeasy-name-override: Directory
  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

````