> ## 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 Function

> CreateFunction registers a new serverless function and creates its initial code commit.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/functions
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/functions:
    post:
      tags:
        - Function
      summary: Create Function
      description: >-
        CreateFunction registers a new serverless function and creates its
        initial code commit.
      operationId: c1.api.functions.v1.FunctionsService.CreateFunction
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.functions.v1.FunctionsServiceCreateFunctionRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.functions.v1.FunctionsServiceCreateFunctionResponse
          description: Successful response
      x-codeSamples:
        - lang: go
          label: CreateFunction
          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.Functions.CreateFunction(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.FunctionsServiceCreateFunctionResponse != 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.functions.createFunction();

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.functions.v1.FunctionsServiceCreateFunctionRequest:
      description: The FunctionsServiceCreateFunctionRequest message.
      properties:
        commitMessage:
          description: The commit message describing the initial code submission.
          readOnly: false
          type: string
        description:
          description: A description of what the function does.
          readOnly: false
          type: string
        displayName:
          description: The human-readable name for the function.
          readOnly: false
          type: string
        functionType:
          description: >-
            The type of function to create, controlling its execution
            environment and capabilities.
          enum:
            - FUNCTION_TYPE_UNSPECIFIED
            - FUNCTION_TYPE_ANY
            - FUNCTION_TYPE_CODE_MODE
          readOnly: false
          type: string
          x-speakeasy-unknown-values: allow
        initialContent:
          additionalProperties:
            format: base64
            type: string
          description: Map of filename to file content for the initial code commit.
          readOnly: false
          type: object
      title: Functions Service Create Function Request
      type: object
      x-speakeasy-name-override: FunctionsServiceCreateFunctionRequest
    c1.api.functions.v1.FunctionsServiceCreateFunctionResponse:
      description: The FunctionsServiceCreateFunctionResponse message.
      properties:
        commit:
          $ref: '#/components/schemas/c1.api.functions.v1.FunctionCommit'
        function:
          $ref: '#/components/schemas/c1.api.functions.v1.Function'
      title: Functions Service Create Function Response
      type: object
      x-speakeasy-name-override: FunctionsServiceCreateFunctionResponse
    c1.api.functions.v1.FunctionCommit:
      description: FunctionCommit represents a single commit in a function's history
      properties:
        author:
          description: The author field.
          readOnly: false
          type: string
        createdAt:
          format: date-time
          readOnly: false
          type: string
        functionId:
          description: The functionId field.
          readOnly: false
          type: string
        id:
          description: The id field.
          readOnly: false
          type: string
        message:
          description: The message field.
          readOnly: false
          type: string
      title: Function Commit
      type: object
      x-speakeasy-name-override: FunctionCommit
    c1.api.functions.v1.Function:
      description: Function represents a customer-provided code extension in the API
      properties:
        createdAt:
          format: date-time
          readOnly: true
          type: string
        deletedAt:
          format: date-time
          readOnly: true
          type: string
        description:
          description: The description field.
          readOnly: false
          type: string
        displayName:
          description: The displayName field.
          readOnly: false
          type: string
        functionType:
          description: The functionType field.
          enum:
            - FUNCTION_TYPE_UNSPECIFIED
            - FUNCTION_TYPE_ANY
            - FUNCTION_TYPE_CODE_MODE
          readOnly: false
          type: string
          x-speakeasy-unknown-values: allow
        head:
          description: The head field.
          readOnly: false
          type: string
        id:
          description: The id field.
          readOnly: false
          type: string
        isDraft:
          description: The isDraft field.
          readOnly: false
          type: boolean
        outboundNetworkAllowlist:
          description: The outboundNetworkAllowlist field.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
        publishedCommitId:
          description: The publishedCommitId field.
          readOnly: false
          type: string
        scopedRoleIds:
          description: >-
            Scoped role IDs define the permissions granted to this function when
            calling
             ConductorOne APIs. These are role IDs (not service roles) that get resolved
             to their service roles at authentication time.

             Currently only the "Read-Only Administrator" role (system:viewer) is supported.
             The role ID can be obtained from the roles API.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
        secret:
          additionalProperties:
            type: string
          description: The secret field.
          readOnly: false
          type: object
        updatedAt:
          format: date-time
          readOnly: true
          type: string
        useSpn:
          description: >-
            FN-347 transition flag. When true, the function authenticates to
            c1-api
             as user:<sp_id> via the AssumeIdentity token exchange using its
             ServicePrincipalBinding; when false, it authenticates as
             function:<id>. Read-only from clients: set by CreateFunction (when the
             tenant has completed the FunctionsToSPN migration) and by the migration
             itself, never by UpdateFunction. Retired once all functions are on SPN.
          readOnly: true
          type: boolean
      title: Function
      type: object
      x-speakeasy-entity: Function
      x-speakeasy-name-override: Function
  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

````