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

# Attach users to a contract

> Attaches one or more users to a contract, each with one or more date ranges.



## OpenAPI

````yaml /api-reference/openapi.json post /contracts/{contract_id}/users
openapi: 3.1.0
info:
  title: COR API
  description: >-
    The COR API lets you integrate with projectcor.com applications using simple
    HTTP methods, in either XML or JSON formats, making this an ideal API for
    developing integrations with other softwares, external clients or mobile
    applications
  version: 1.0.0
servers:
  - url: https://api.projectcor.com/v1
    description: Production server
security:
  - bearerAuth: []
paths:
  /contracts/{contract_id}/users:
    post:
      tags:
        - Contracts Users
      summary: Attach users to a contract
      description: >-
        Attaches one or more users to a contract, each with one or more date
        ranges.
      parameters:
        - name: contract_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractAttachUsersInput'
            example:
              users:
                - id: 123
                  dates:
                    - start: '2026-01-01'
                      end: '2026-02-01'
                    - start: '2026-01-01'
                      end: '2026-02-02'
      responses:
        '200':
          description: Users attached to contract with full or partial success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractAttachUsersResponse'
              example:
                status: partial_success
                company_id: 999
                contract_id: 777
                records_received: 8
                records_created: 2
                records_rejected: 8
                assigned:
                  - id: 501
                    user_id: 88001
                    start_date: '2024-01-01T00:00:00.000Z'
                    end_date: '2024-12-31T00:00:00.000Z'
                  - id: 502
                    user_id: 88001
                    start_date: '2024-03-01T00:00:00.000Z'
                    end_date: '2024-06-30T00:00:00.000Z'
                errors:
                  - id: 88001
                    dates:
                      - start: '2024-06-01'
                        end: '2024-04-01'
                        message: Date malformatted. Start date must be before end date
                      - start: null
                        end: null
                        message: Date malformatted
                      - start: '2024-02-01'
                        end: null
                        message: Date malformatted. Start and end date are required
                      - start: not-a-date
                        end: '2024-12-31'
                        message: Invalid date
                      - start: '1990-01-01'
                        end: '1990-06-30'
                        message: >-
                          Invalid contract periods. Range must be within
                          contract start and end dates
                    message: Partial success. Some dates were rejected
                  - id: hello
                    dates:
                      - start: '2024-01-01'
                        end: '2024-12-31'
                    message: User malformatted
                  - id: 88002
                    start: '2024-01-01'
                    end: '2024-12-31'
                    message: >-
                      Legacy format detected. Use "dates" array instead of
                      "start" and "end" fields
                  - id: 88003
                    dates: []
                    message: Date malformatted or empty
                  - id: 88004
                    dates:
                      - start: '2024-07-01'
                        end: '2024-07-01'
                        message: Date malformatted. Start date must be before end date
                    message: Dates are malformatted or empty
                  - id: 88005
                    dates:
                      - start: null
                        end: null
                        message: Date malformatted
                    message: Partial success. Some dates were rejected
                  - id: 999999
                    dates:
                      - start: '2024-01-01'
                        end: '2024-12-31'
                    message: User malformatted
                  - id: 88005
                    dates:
                      - start: '2024-01-01'
                        end: '2024-06-30'
                    message: User malformatted
components:
  schemas:
    ContractAttachUsersInput:
      type: object
      required:
        - users
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/ContractAttachUsersUserInput'
    ContractAttachUsersResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - success
            - partial_success
            - failure
          description: Result status for attach operation
        company_id:
          type: integer
          description: Company ID
        contract_id:
          type: integer
          description: Contract ID
        records_received:
          type: integer
          description: Total number of date records received
        records_created:
          type: integer
          description: Total number of date records successfully created
        records_rejected:
          type: integer
          description: Total number of date records rejected
        user_ids:
          type: array
          items:
            type: integer
          description: Array of user IDs that were successfully assigned to the contract
        assigned:
          type: array
          items:
            $ref: '#/components/schemas/ContractUserAssignment'
          description: Array of user assignments for the contract
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ContractAttachUsersError'
          description: Array of user assignments that failed to be assigned to the contract
    ContractAttachUsersUserInput:
      type: object
      required:
        - id
        - dates
      properties:
        id:
          type: integer
          description: User ID
        dates:
          type: array
          description: Date ranges to assign for the user
          items:
            $ref: '#/components/schemas/ContractAttachUsersDateInput'
    ContractUserAssignment:
      type: object
      properties:
        id:
          type: integer
          description: Assignment ID
        user_id:
          type: integer
          description: User ID
        contract_id:
          type: integer
          description: Contract ID
        company_id:
          type: integer
          description: Company ID
        start_date:
          type: string
          format: date-time
          description: Assignment start date-time
        end_date:
          type: string
          format: date-time
          description: Assignment end date-time
    ContractAttachUsersError:
      type: object
      properties:
        id:
          type:
            - integer
            - string
          description: User ID that contains rejected dates
        dates:
          type: array
          items:
            $ref: '#/components/schemas/ContractAttachUsersErrorDate'
        start:
          type:
            - string
            - 'null'
          format: date
          description: Legacy start date field used in malformed payloads
        end:
          type:
            - string
            - 'null'
          format: date
          description: Legacy end date field used in malformed payloads
        message:
          type: string
    ContractAttachUsersDateInput:
      type: object
      required:
        - start
        - end
      properties:
        start:
          type: string
          format: date
          description: Assignment start date
        end:
          type: string
          format: date
          description: Assignment end date
    ContractAttachUsersErrorDate:
      type: object
      properties:
        start:
          type:
            - string
            - 'null'
          format: date
        end:
          type:
            - string
            - 'null'
          format: date
        message:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````