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

# Get Project by id

> Retrieve a project by its unique identifier.



## OpenAPI

````yaml /openapi-specs/timmi-project.yaml get /timmi-project/api/v4/projects/{id}
openapi: 3.1.0
info:
  title: Lucca Project API (not v3)
  version: '1.0'
  description: >
    Welcome on the documentation for the Lucca Project API.


    It is not conforming to the "v3 API" constraints. Main differences are:

    - All available fields are systematically returned. Fields sets may be
    differente between endpoints for resources collections and single resources.

    - Paging is controlled through the `take` and `offset` parameters.
  contact:
    name: API Support
    url: https://support.lucca.fr
    email: contact@luccasoftware.com
  license:
    name: Unlicensed
    url: https://www.luccasoftware.com
servers:
  - url: https://{host}
    description: Your Lucca account URL.
    variables:
      host:
        default: example.ilucca.net
        description: >-
          The URL of your dedicated Lucca account: `{account}.{env}.{region}`.


          Account reflects your company name. Env indicates the environment.
          Region depends on your server location.


          **Please, use your test or sandbox environments (and not your
          production env.) for testing purposes.**


          Environments:

          - `ilucca`: production environment for customers.

          - `ilucca-test`: test environment for customers.

          - `ilucca-demo`: demo environment for prospects.


          Regions:

          - `.ch` for Swiss located accounts.

          - `.net` for the others.


          Regarding sandboxes, the pattern differs:
          `https://{account}-{sandboxName}.sandbox.{server}.luccasoftware.com`,
          where:

          - `{sandboxName}` is automatically generated upon creation.

          - `{server}` may be "eu1", "eu2" or "ch1".
security: []
tags:
  - name: Clients
    description: Clients the projects are serving.
  - name: Core concepts
    description: Concepts that are commonly used in the whole app.
  - name: Financials
    description: Exposes KPI for project management.
  - name: Organizations
    description: Set of legal establishments sharing the same accounting.
  - name: Project services
    description: Items of work (WBS) for a project.
  - name: Projects
    description: The main resource in Lucca Project.
paths:
  /timmi-project/api/v4/projects/{id}:
    parameters:
      - $ref: '#/components/parameters/Authorization'
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: Unique identifier of the project.
    get:
      tags:
        - Projects
      summary: Get Project by id
      description: Retrieve a project by its unique identifier.
      operationId: get-timmi-project-api-v4-projects-projectId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/ResponseProblem'
        '401':
          $ref: '#/components/responses/ResponseProblem'
        '404':
          $ref: '#/components/responses/ResponseProblem'
        '500':
          $ref: '#/components/responses/ResponseProblem'
components:
  parameters:
    Authorization:
      name: Authorization
      required: true
      description: 'API key. Value must be formatted like so: `lucca application={api_key}`.'
      in: header
      schema:
        type: string
  schemas:
    Project:
      title: The Project resource
      description: >-
        ## Definitions


        Projects are the main resources in Lucca Project.


        They belong to a single
        [Client](reference/Timmi-Project.yaml/components/schemas/Client) and
        [Organization](reference/Timmi-Project.yaml/components/schemas/Organization).
        Internal (non-billable) projects may be attached to a client that
        represents your own company.


        Any billable project, whether fixed price or time and materials, must
        have a owner, start and end dates, and a contract:

        - A fixed price project must have prices set on its services.

        - A time and materials project must have bill rates set on its
        [services](reference/Timmi-Project.yaml/components/schemas/ProjectService).


        A Project is only available for time submission while on the
        **"ongoing"** status. Whenever a project is marked as complete or
        abandonned, all its services' estimates are adjusted to the actual spent
        value.


        A project must be valid (ie all required fields must be set) before its
        status can be set to "ongoing".


        Once ongoing, a project cannot go back to the "draft" status and can no
        longer be deleted. It may only be abandonned or complete.


        ## Fields
      allOf:
        - $ref: '#/components/schemas/ProjectInCollection'
        - properties:
            organizationId:
              type: integer
              minimum: 1
              description: >-
                Identifier of the organization this project belongs to.
                Inherited from the client.
              readOnly: true
            description:
              type:
                - 'null'
                - string
              default: ''
              description: Optional markdown formatted description.
            initialDeliveryDate:
              type:
                - 'null'
                - string
              format: date
              description: Initially planned delivery date.
            revisedDeliveryDate:
              type:
                - 'null'
                - string
              format: date
              description: Updated planned (or actual) delivery date.
              readOnly: true
            launchedAt:
              type:
                - 'null'
                - string
              format: date-time
              description: Timestamp of the project launch.
              readOnly: true
            lastChargedOn:
              type:
                - 'null'
                - string
              format: date
              description: Timestamp of the last time or expense allocated on the project.
              readOnly: true
            standardRateCardId:
              type: integer
              minimum: 1
              writeOnly: true
            standardRateCard:
              type: object
              description: >-
                Standard rate card version applicable for this project. Used for
                profit analysis.
              properties:
                id:
                  type: integer
                  minimum: 1
                  readOnly: true
                name:
                  type: string
                  readOnly: true
            initialTimeEstimate:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Duration'
              description: >-
                Initial estimate of the work duration needed to complete the
                project.
              readOnly: true
            revisedTimeEstimate:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Duration'
              description: >-
                Updated estimate of the work duration needed to complete the
                project. Can be modified through creating a new
                [EstimateToComplete]().
              readOnly: true
            standardRate:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/PriceRate'
              readOnly: true
              description: >-
                Standard daily/hourly rate this project should be invoiced at.
                Equal to (price + discount) / initialTimeEstimate.
            billRate:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/PriceRate'
              description: >-
                Actual daily/hourly rate this project will be invoiced at. Equal
                to price / initialTimeEstimate.
              readOnly: true
            initialBudget:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Price'
              description: Sum of this project's services initial budgets.
              readOnly: true
            revisedBudget:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Price'
              description: Sum of this project's services revised budgets.
              readOnly: true
            discount:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Price'
              description: Sum of this project's services discounts.
              readOnly: true
            discountRate:
              type:
                - 'null'
                - number
              multipleOf: 0.1
              readOnly: true
            estimatedOverrun:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Price'
              description: >-
                Difference between this project's initial budget and its revised
                budget. Represents the planned overrun upon completion.
              readOnly: true
            initialRecoveryRate:
              type:
                - 'null'
                - number
              readOnly: true
            estimatedRecoveryRate:
              type:
                - 'null'
                - number
              readOnly: true
            totalInvoiced:
              anyOf:
                - type: 'null'
                - $ref: '#/components/schemas/Price'
              description: Sum of all invoices issued for this project.
              readOnly: true
            authorizedActions:
              type: array
              description: Actions the current user can do on the project.
              items:
                type: string
                enum:
                  - canEditAndDelete
                  - canUpdateStatus
              readOnly: true
            risks:
              type: array
              description: List of risks this project is exposed to.
              items:
                type: object
                properties:
                  type:
                    description: >-
                      List of all risks projects and tasks are exposed to:


                      - **budgetOverRun**: total amount spent is greater than
                      the inBudgetitial budget, or revised budget is greated
                      than initial budget.

                      - **delayedDelivery**: revised delivery date is later than
                      initially planned or project is still ongoing but its
                      revised delivery date is already passed.

                      - **highlyDiscounted**: the discount amount is greater
                      than the configured threshold.
                    type: string
                    enum:
                      - budgetOverRun
                      - delayedDelivery
                      - highlyDiscounted
                  label:
                    type: string
              readOnly: true
            anomalies:
              type: array
              description: List of anomalies this project is exposed to.
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: |-
                      List of all anomalies projects and tasks are exposed to:
                      - **noServices**:
                      - **missingOwner**: An owner is missing
                      - **missingClient**: The project or the task has no Client
                      - **missingName**: The name of the project/task is missing
                      - **missingCode**:
                      - **missingStandardRateCard**:
                      - **fixedPriceInvoicingMismatch**:
                      - **budgetExceeded**:
                      - **deliveryDateExceeded**:
                      - **dueInvoiceMilestone**:
                    enum:
                      - noServices
                      - missingOwner
                      - missingClient
                      - missingName
                      - missingCode
                      - missingStandardRateCard
                      - fixedPriceInvoicingMismatch
                      - budgetExceeded
                      - deliveryDateExceeded
                      - dueInvoiceMilestone
                  label:
                    type: string
              readOnly: true
            invoicingWarnings:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - unapprovedItems
                      - unconfirmedMilestone
                      - creditNote
                  applicableFrom:
                    type: string
                    format: date
                    examples:
                      - '2021-07-22'
                  preventsInvoicing:
                    type: boolean
                  label:
                    type: string
              readOnly: true
          required:
            - standardRateCardId
      x-tags:
        - Projects
      examples: []
      type: object
    ProjectInCollection:
      title: The Projects Collection resource
      x-tags:
        - Projects
      type: object
      properties:
        id:
          type: integer
          minimum: 1
          readOnly: true
        name:
          type: string
          maxLength: 255
        code:
          type:
            - string
            - 'null'
          maxLength: 255
          description: Defaults to an automatically generated value.
        clientId:
          type: integer
          minimum: 1
          writeOnly: true
        client:
          type: object
          properties:
            id:
              type: number
              readOnly: true
            name:
              type: string
              minLength: 1
              readOnly: true
            code:
              type: string
              minLength: 1
              readOnly: true
            externalCode:
              type:
                - 'null'
                - string
              readOnly: true
          readOnly: true
        ownerId:
          type: integer
          minimum: 1
          writeOnly: true
        owner:
          description: >-
            The user assigned as this project lead. Set through the ownerId
            field.
          readOnly: true
          type:
            - 'null'
            - object
          properties:
            id:
              type: integer
              minimum: 1
              readOnly: true
            firstName:
              type: string
              readOnly: true
            lastName:
              type: string
              readOnly: true
            picture:
              type: object
              properties:
                href:
                  type: string
                  format: uri
              readOnly: true
            dtContractEnd:
              type: string
              format: date
              readOnly: true
            establishmentId:
              type: integer
              minimum: 1
              readOnly: true
        status:
          type: string
          enum:
            - draft
            - ongoing
            - completed
            - cancelled
            - suspended
            - archived
          description: >-
            Project is only available for time submission when having a
            "ongoing" status. Status can be updated through the "status-updates"
            API.
          default: draft
          readOnly: true
        contractType:
          type: string
          enum:
            - nonBillable
            - fixedPrice
            - timeAndMaterials
            - cappedTimeAndMaterials
          default: nonBillable
          description: >-
            Describes project contract types:

            - Non-billable (internal): no revenue recognized, budget estimates
            are optional.

            - Fixed price: progress-based revenue recognition, budget estimates
            are mandatory.

            - Time and Materials: time-based revenue recognition, initial
            estimates are indicative.

            - Not-to-exceed Time and Materials: time-based revenue recognition
            with a maximum value, initial estimate sets the maximum value.
        startsOn:
          type:
            - 'null'
            - string
          format: date
          description: Start of the project execution.
        createdAt:
          type: string
          format: date-time
          description: Timestamp of the project creation.
          readOnly: true
        lastModifiedAt:
          type: string
          format: date-time
          description: Timestamp of the last update to the project.
          readOnly: true
        price:
          anyOf:
            - type: 'null'
            - $ref: '#/components/schemas/Price'
          description: >-
            Price of the project. Equal to the sum of this project's services
            prices.
          readOnly: true
        authorizedActions:
          type: array
          description: Actions the current user can do on the project.
          items:
            type: string
            enum:
              - canEditAndDelete
              - canUpdateStatus
          readOnly: true
      required:
        - name
        - clientId
    Duration:
      title: Duration
      description: >-
        Represents a duration in days or hours. ISO value is formatted as an
        [ISO-8601 duration
        string](https://en.wikipedia.org/wiki/ISO_8601#Durations). 

        For example `P5DT8H` represents 128 hours. When sending a duration to
        the server, please only send either a `value` or an `iso`. In most
        cases, the 

        `unit` is set on the project's organization and thus should not be sent
        in the request.
      type: object
      properties:
        value:
          type: number
          format: float
          multipleOf: 0.001
          description: Decimal value
        iso:
          type: string
          format: duration
          description: ISO-8601 formatted string
        unit:
          $ref: '#/components/schemas/DurationUnit'
      examples:
        - value: 128
          iso: P5DT8H
          unit: hour
    PriceRate:
      title: PriceRate
      description: Represents an amount of money per day or hour.
      type: object
      properties:
        price:
          $ref: '#/components/schemas/Price'
        unit:
          allOf:
            - $ref: '#/components/schemas/DurationUnit'
            - readOnly: true
    Price:
      title: Price
      description: >-
        Represents an amount of money. Is a value object containing a decimal
        number and a currency.
      type: object
      properties:
        amount:
          type: number
        currencyId:
          $ref: '#/components/schemas/CurrencyId'
    DurationUnit:
      type: string
      enum:
        - day
        - hour
      description: 'Duration unit: days or hours.'
    CurrencyId:
      title: CurrencyId
      type: string
      enum:
        - EUR
        - USD
        - CAD
        - ...
      readOnly: true
  responses:
    ResponseProblem:
      description: Problem
      content:
        application/json:
          schema:
            description: ''
            type: object
            x-examples:
              example-1:
                type: https://tools.ietf.org/html/rfc7231#section-6.5.1
                title: One or more validation errors occurred.
                status: 400
                traceId: 00-da6c8638331d052ea1c8c0087705b797-56ea5435c7c46706-00
                errors:
                  organizationId:
                    - >-
                      A value for the 'organizationId' parameter or property was
                      not provided.
            properties:
              type:
                type: string
                minLength: 1
                format: uri
              title:
                type: string
              status:
                type: integer
                enum:
                  - 400
                  - 401
                  - 403
                  - 404
                  - 405
                  - 500
              traceId:
                type: string
                minLength: 1
                format: uuid
              errors:
                type: object
                additionalProperties: true

````