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

# Creates a project for the authenticated service provider.

> The project is created in status 1 (Not started) and numbered from the same sequence
the app uses, so its number and prefix match what the app would have given it. The same
creation timeline entry and the same project-created notification fire as when a project
is created in the app.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/projects
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/projects:
    post:
      tags:
        - Projects
      summary: Creates a project for the authenticated service provider.
      description: "The project is created in status 1 (Not started) and numbered from the same sequence\r\nthe app uses, so its number and prefix match what the app would have given it. The same\r\ncreation timeline entry and the same project-created notification fire as when a project\r\nis created in the app."
      operationId: post_v1_projects
      requestBody:
        description: Project details.
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CreateProjectCommand'
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectCommand'
          text/json:
            schema:
              $ref: '#/components/schemas/CreateProjectCommand'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreateProjectCommand'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/CreateProjectResultBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProjectResultBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CreateProjectResultBaseResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    CreateProjectCommand:
      required:
        - ClientId
        - GroupId
        - LocationId
        - Title
        - TypeId
      type: object
      properties:
        Title:
          minLength: 1
          type: string
          description: Project title. Required.
          example: Office 365 migration
        Description:
          type: string
          description: Project description.
          nullable: true
        ClientId:
          type: integer
          description: Identifier of the client the project belongs to. Required.
          format: int64
        LocationId:
          type: integer
          description: Identifier of the client location the project belongs to. Required.
          format: int64
        LeadAssigneeId:
          type: integer
          description: "Identifier of the technician to lead the project. Optional - a project created without one\r\nhas no lead, and none is assigned by default."
          format: int64
          nullable: true
        TypeId:
          type: string
          description: Identifier of the project type. Required.
          format: uuid
        TagIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of tags to apply to the project.
          nullable: true
        GroupId:
          type: integer
          description: >-
            Identifier of the technician group the project is assigned to.
            Required.
          format: int64
          example: 101
        WatcherIds:
          type: array
          items:
            type: integer
            format: int64
          description: >-
            Identifiers of technicians to watch the project. The lead is never
            also a watcher.
          nullable: true
        SharedWithContactIds:
          type: array
          items:
            type: integer
            format: int64
          description: >-
            Identifiers of contacts to share the project with. They must belong
            to `ClientId`.
          nullable: true
        TargetDate:
          type: string
          description: Date the project is targeted to finish (UTC).
          format: date-time
          nullable: true
        CreatedByName:
          type: string
          description: "Display name to record as the project creator. An API key is not a person, so when it is\r\nomitted or blank the creator is recorded as `API`."
          nullable: true
        CreatedOn:
          type: string
          description: "Backdate the project's creation timestamp - for importing projects from another system.\r\nMust not be in the future. Omit to use the current time.\r\nSend only when importing history. A record with this field set sends no emails or notifications."
          format: date-time
          nullable: true
        UpdatedOn:
          type: string
          description: "Backdate the project's last-activity timestamp so an imported project does not sort above\r\nlive work. Must not be in the future or earlier than `CreatedOn`. Defaults to\r\nthe effective creation time."
          format: date-time
          nullable: true
      additionalProperties: false
      description: "Request body for creating a project. The owning service provider is resolved from the\r\nrequest context, not from the body."
    CreateProjectResultBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/CreateProjectResult'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    CreateProjectResult:
      type: object
      properties:
        Id:
          type: string
          description: Identifier of the created project.
          format: uuid
      additionalProperties: false
      description: The identifier of the created project.
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.