{
  "openapi": "3.0.0",
  "info": {
    "title": "Globality API",
    "version": "2.0.0",
    "description": "Use Globality public APIs to automatically create projects in Globality with pre-populated information from your systems, as well as search for projects to read post-award data and pull them into your systems."
  },
  "servers": [
    {
      "url": "https://apis.prod.globality.com"
    },
    {
      "url": "https://apis.eu.globality.com",
      "description": "Production endpoint for EU"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Authentication is required to interact with the Globality platform.\n\nTo obtain a token, send a POST request to <br><br>`https://globality-prod.auth0.com/oauth/token`<br><br> with the body:<br>\n```\n{\n  \"client_id\": \"<client_id>\",\n  \"client_secret\": \"<client_secret>\",\n  \"audience\": \"https://api.prod.globality.io/management\",\n  \"grant_type\": \"client_credentials\"\n}\n```\nYou will receive a response like:\n```\n{\n  \"access_token\": \"<token>\",\n  \"scope\": \"read:project write:project\",\n  \"expires_in\": 86400,\n  \"token_type\": \"Bearer\"\n}\n```\nPaste the `access_token` value into the field below."
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": 401,
              "message": "Unauthorized: Invalid JWT token"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": 403,
              "message": "Forbidden"
            }
          }
        }
      },
      "MethodNotAllowed": {
        "description": "Method not allowed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": 405,
              "message": "Method not allowed"
            }
          }
        }
      },
      "NotFound": {
        "description": "Not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": 404,
              "message": "Resource not found"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal server error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": 500,
              "message": "Internal server error"
            }
          }
        }
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int64"
          },
          "message": {
            "type": "string"
          }
        },
        "example": {
          "code": 400,
          "message": "Something went wrong"
        }
      },
      "NotFoundResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int64"
          },
          "message": {
            "type": "string"
          }
        },
        "description": "Resource not found",
        "example": {
          "code": 404,
          "message": "Project not found"
        }
      },
      "Locale": {
        "type": "string",
        "example": "es-419",
        "enum": [
          "en-US",
          "en_US",
          "es-419",
          "es_419",
          "pt-BR",
          "pt_BR",
          "de-DE",
          "de_DE",
          "fr-FR",
          "fr_FR",
          "pl-PL",
          "pl_PL",
          "ru-RU",
          "ru_RU",
          "zh-CN",
          "zh_CN",
          "ja-JP",
          "ja_JP"
        ]
      },
      "ResponseLocale": {
        "type": "string",
        "example": "EN_US",
        "enum": [
          "EN_US",
          "ES_419",
          "PT_BR",
          "DE_DE",
          "FR_FR",
          "PL_PL",
          "RU_RU",
          "ZH_CN",
          "JA_JP"
        ]
      },
      "customData": {
        "type": "array",
        "example": [
          {
            "field": "customField_1",
            "values": [
              "value_1"
            ]
          },
          {
            "field": "customField_2",
            "values": [
              "value_2"
            ]
          }
        ],
        "items": {
          "type": "object",
          "required": [
            "field",
            "values"
          ],
          "properties": {
            "field": {
              "type": "string"
            },
            "values": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              }
            }
          }
        }
      },
      "createProjectPayload": {
        "type": "object",
        "description": "Data required to create a project on the Globality platform. Provide either `projectOwnerExternalId` or `projectOwnerEmail` to identify the project owner. When using `projectOwnerEmail` for a user who does not yet have a Globality account, `firstName` and `lastName` are also required.\n",
        "required": [
          "projectSource",
          "projectSourceItemId",
          "projectTitle"
        ],
        "properties": {
          "projectSource": {
            "type": "string",
            "example": "SOURCING_PROJECT",
            "enum": [
              "SOURCING_PROJECT",
              "PURCHASE_REQUISITION"
            ]
          },
          "projectSourceItemId": {
            "type": "string",
            "example": "8474"
          },
          "projectTitle": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "example": "Test Project"
          },
          "projectOwnerExternalId": {
            "type": "string",
            "minLength": 1,
            "example": "Test_1234",
            "description": "External ID of the project owner. Required if projectOwnerEmail is not provided."
          },
          "projectOwnerEmail": {
            "type": "string",
            "format": "email",
            "example": "j.doe@example.com",
            "description": "Email of the project owner. Required if projectOwnerExternalId is not provided. If the user does not yet have a Globality account, firstName and lastName are also required."
          },
          "firstName": {
            "type": "string",
            "example": "Jane"
          },
          "lastName": {
            "type": "string",
            "example": "Doe"
          },
          "sourceSystemName": {
            "type": "string",
            "enum": [
              "SAP_ARIBA",
              "COUPA",
              "ORACLE",
              "GLOBALITY_API"
            ]
          },
          "projectDataFields": {
            "type": "object",
            "properties": {
              "projectDescription": {
                "type": "string",
                "minLength": 30,
                "maxLength": 2500,
                "description": "Description of project",
                "example": "Description for a test project"
              },
              "startDate": {
                "type": "string",
                "format": "date-time",
                "description": "Start date for the project",
                "example": "2002-10-02T15:00:00.000Z"
              },
              "projectPrivateBudget": {
                "type": "object",
                "required": [
                  "baselineSpend",
                  "currency"
                ],
                "description": "Private budget for the project",
                "properties": {
                  "currency": {
                    "type": "string",
                    "minLength": 1,
                    "example": "USD"
                  },
                  "baselineSpend": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 70368744177663,
                    "example": 1000000.23
                  }
                }
              },
              "teamMemberExternalIds": {
                "type": "array",
                "example": [
                  "TLO_54321",
                  "JCANADA_7890"
                ],
                "items": {
                  "type": "string"
                }
              },
              "teamMembers": {
                "type": "array",
                "example": [
                  {
                    "email": "existing.user@example.com"
                  },
                  {
                    "email": "new.user@example.com",
                    "firstName": "John",
                    "lastName": "Doe"
                  }
                ],
                "items": {
                  "type": "object",
                  "required": [
                    "email"
                  ],
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Email of team member. If new to the platform, firstName and lastName are required."
                    },
                    "firstName": {
                      "type": "string"
                    },
                    "lastName": {
                      "type": "string"
                    }
                  }
                }
              },
              "organizationalUnit": {
                "type": "array",
                "example": [
                  "TBFD",
                  "BRIN"
                ],
                "items": {
                  "type": "string"
                }
              },
              "clientRegion": {
                "type": "array",
                "example": [
                  "LAX"
                ],
                "items": {
                  "type": "string"
                }
              },
              "costCenter": {
                "type": "array",
                "example": [
                  "512",
                  "123"
                ],
                "items": {
                  "type": "string"
                }
              },
              "commodityCode": {
                "type": "array",
                "example": [
                  "A1B2C3",
                  "D4E5F6"
                ],
                "items": {
                  "type": "string"
                }
              },
              "locale": {
                "$ref": "#/components/schemas/Locale"
              }
            }
          },
          "projectCustomData": {
            "$ref": "#/components/schemas/customData"
          }
        }
      },
      "updateProjectPayload": {
        "type": "object",
        "description": "Project status needed to update project in the Globality platform.",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "example": "PAUSED",
            "enum": [
              "ACTIVE",
              "PAUSED",
              "CANCELLED",
              "COMPLETED"
            ]
          }
        }
      },
      "projectMember": {
        "type": "object",
        "description": "A project team member.",
        "required": [
          "email",
          "firstName",
          "lastName",
          "externalId",
          "role"
        ],
        "properties": {
          "email": {
            "type": "string",
            "example": "john.smith@example.com"
          },
          "firstName": {
            "type": "string",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "example": "Smith"
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "example": "AX12345"
          },
          "role": {
            "type": "string",
            "example": "Project Procurement"
          }
        }
      },
      "projectSummary": {
        "type": "object",
        "required": [
          "id",
          "href",
          "name",
          "createdAt",
          "updatedAt",
          "status",
          "resolution",
          "phase",
          "serviceProviderPhase"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "example": "https://apis.prod.globality.com/v2/projects/3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "name": {
            "type": "string",
            "example": "Demo Project"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "isExternal": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "example": "Active",
            "enum": [
              "Active",
              "Paused",
              "Cancelled",
              "Completed"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "ARCHIVED",
              "ABANDONED",
              "CLOSED",
              "REDACTED",
              "STALE"
            ]
          },
          "phase": {
            "type": "string",
            "nullable": true,
            "example": "Project Initiated",
            "enum": [
              "Project Initiated",
              "Brief Completed",
              "Providers Invited",
              "Proposals Received",
              "Awarded"
            ]
          },
          "serviceProviderPhase": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "providerId": {
                  "type": "string",
                  "format": "uuid"
                },
                "providerPhase": {
                  "type": "string",
                  "example": "Interested"
                },
                "awardCompletedAt": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                }
              }
            }
          }
        }
      },
      "searchProjectsResponse": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of projects matching the filter"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/projectSummary"
            }
          }
        }
      },
      "projectDetailsResponse": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "referenceNumber",
                "externalId",
                "isExternal",
                "name",
                "createdBy",
                "updatedAt",
                "projectType",
                "status",
                "phase",
                "locale",
                "projectOwners",
                "teamMembers",
                "brief"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "referenceNumber": {
                  "type": "integer",
                  "example": 345678
                },
                "externalId": {
                  "type": "string",
                  "nullable": true,
                  "example": "WD40452"
                },
                "isExternal": {
                  "type": "boolean",
                  "example": true
                },
                "name": {
                  "type": "string",
                  "example": "Demo Project"
                },
                "createdBy": {
                  "type": "string",
                  "example": "j.doe@example.com"
                },
                "createdAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "updatedAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "projectType": {
                  "type": "string",
                  "example": "Request for Proposal"
                },
                "status": {
                  "type": "string",
                  "example": "Paused",
                  "enum": [
                    "Active",
                    "Paused",
                    "Cancelled",
                    "Completed"
                  ]
                },
                "resolution": {
                  "type": "string"
                },
                "phase": {
                  "type": "string",
                  "nullable": true,
                  "example": "Project Initiated",
                  "enum": [
                    "Project Initiated",
                    "Brief Completed",
                    "Providers Invited",
                    "Proposals Received",
                    "Awarded"
                  ]
                },
                "locale": {
                  "$ref": "#/components/schemas/ResponseLocale"
                },
                "projectOwners": {
                  "type": "array",
                  "example": [
                    {
                      "email": "j.doe@example.com",
                      "firstName": "Jane",
                      "lastName": "Doe",
                      "externalId": "j_doe",
                      "role": "Project Owner"
                    }
                  ],
                  "items": {
                    "$ref": "#/components/schemas/projectMember"
                  }
                },
                "teamMembers": {
                  "type": "array",
                  "example": [
                    {
                      "email": "j.smith@example.com",
                      "firstName": "John",
                      "lastName": "Smith",
                      "externalId": "j_smith",
                      "role": "Project Procurement"
                    },
                    {
                      "email": "j.doe@example.com",
                      "firstName": "Jane",
                      "lastName": "Doe",
                      "externalId": "j_doe",
                      "role": "Project Viewer"
                    },
                    {
                      "email": "john.doe@example.com",
                      "firstName": "John",
                      "lastName": "Doe",
                      "externalId": "john_doe",
                      "role": "Project Editor"
                    }
                  ],
                  "items": {
                    "$ref": "#/components/schemas/projectMember"
                  }
                },
                "brief": {
                  "$ref": "#/components/schemas/projectBrief"
                }
              }
            }
          }
        }
      },
      "projectProviderResponse": {
        "type": "object",
        "required": [
          "id",
          "externalId",
          "isExternal",
          "name",
          "createdBy",
          "description",
          "createdAt",
          "updatedAt",
          "projectType",
          "locale",
          "budget",
          "projectOwners",
          "teamMembers",
          "projectCustomData",
          "provider"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "example": "WD40452"
          },
          "isExternal": {
            "type": "boolean",
            "example": true
          },
          "name": {
            "type": "string",
            "example": "Demo Project"
          },
          "createdBy": {
            "type": "string",
            "example": "j.doe@example.com"
          },
          "description": {
            "type": "string",
            "example": "Example test project description"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "projectType": {
            "type": "string",
            "example": "Request for Proposal"
          },
          "organizationalUnit": {
            "type": "array",
            "example": [
              "TBFD",
              "BRIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "costCenter": {
            "type": "array",
            "example": [
              "512",
              "123"
            ],
            "items": {
              "type": "string"
            }
          },
          "clientRegion": {
            "type": "array",
            "example": [
              "LAX"
            ],
            "items": {
              "type": "string"
            }
          },
          "locale": {
            "$ref": "#/components/schemas/ResponseLocale"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "budget": {
            "type": "object",
            "properties": {
              "maximum": {
                "type": "number",
                "example": 3100000
              },
              "minimum": {
                "type": "number",
                "example": 100000
              },
              "currency": {
                "type": "string",
                "example": "USD"
              }
            }
          },
          "projectOwners": {
            "type": "array",
            "example": [
              {
                "email": "j.doe@example.com",
                "firstName": "Jane",
                "lastName": "Doe",
                "externalId": "j_doe",
                "role": "Project Owner"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/projectMember"
            }
          },
          "teamMembers": {
            "type": "array",
            "example": [
              {
                "email": "j.smith@example.com",
                "firstName": "John",
                "lastName": "Smith",
                "externalId": "j_smith",
                "role": "Project Procurement"
              },
              {
                "email": "j.doe@example.com",
                "firstName": "Jane",
                "lastName": "Doe",
                "externalId": "j_doe",
                "role": "Project Viewer"
              },
              {
                "email": "john.doe@example.com",
                "firstName": "John",
                "lastName": "Doe",
                "externalId": "john_doe",
                "role": "Project Editor"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/projectMember"
            }
          },
          "projectCustomData": {
            "$ref": "#/components/schemas/customData"
          },
          "clientCategory": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "A0101",
              "B0123f"
            ]
          },
          "provider": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "example": "Test Provider 01"
              },
              "address1": {
                "type": "string",
                "example": "4642 Main Street"
              },
              "address2": {
                "type": "string",
                "nullable": true,
                "example": "Unit B"
              },
              "city": {
                "type": "string",
                "example": "San-Francisco"
              },
              "province": {
                "type": "string",
                "nullable": true,
                "example": "CA"
              },
              "postalCode": {
                "type": "string",
                "example": "90000"
              },
              "country": {
                "type": "string",
                "example": "United States"
              },
              "externalId": {
                "type": "string",
                "nullable": true,
                "example": "AHG0998"
              },
              "externalName": {
                "type": "string",
                "nullable": true,
                "example": "MVN"
              },
              "phase": {
                "type": "string"
              },
              "participants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "contactExternalId": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactFirstName": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactLastName": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactEmail": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "example": {
                    "contactExternalId": "PGH0457",
                    "contactFirstName": "John",
                    "contactLastName": "Smith",
                    "contactEmail": "john.smith@example.com"
                  }
                }
              }
            }
          },
          "proposal": {
            "$ref": "#/components/schemas/proposalDetails"
          },
          "brief": {
            "$ref": "#/components/schemas/projectBrief"
          }
        }
      },
      "projectProviderAllProposalsResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "provider",
          "proposals"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "example": "WD40452"
          },
          "isExternal": {
            "type": "boolean",
            "example": true
          },
          "name": {
            "type": "string",
            "example": "Demo Project"
          },
          "createdBy": {
            "type": "string",
            "example": "j.doe@example.com"
          },
          "description": {
            "type": "string",
            "example": "Example test project description"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "projectType": {
            "type": "string",
            "example": "Request for Proposal"
          },
          "organizationalUnit": {
            "type": "array",
            "example": [
              "TBFD",
              "BRIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "costCenter": {
            "type": "array",
            "example": [
              "512",
              "123"
            ],
            "items": {
              "type": "string"
            }
          },
          "clientCategory": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "A0101",
              "B0123f"
            ]
          },
          "clientRegion": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "LAX"
            ]
          },
          "locale": {
            "$ref": "#/components/schemas/ResponseLocale"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "budget": {
            "type": "object",
            "properties": {
              "maximum": {
                "type": "number",
                "example": 3100000
              },
              "minimum": {
                "type": "number",
                "example": 100000
              },
              "currency": {
                "type": "string",
                "example": "USD"
              }
            }
          },
          "projectOwners": {
            "type": "array",
            "example": [
              {
                "email": "j.doe@example.com",
                "firstName": "Jane",
                "lastName": "Doe",
                "externalId": "j_doe",
                "role": "Project Owner"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/projectMember"
            }
          },
          "teamMembers": {
            "type": "array",
            "example": [
              {
                "email": "j.smith@example.com",
                "firstName": "John",
                "lastName": "Smith",
                "externalId": "j_smith",
                "role": "Project Procurement"
              },
              {
                "email": "j.doe@example.com",
                "firstName": "Jane",
                "lastName": "Doe",
                "externalId": "j_doe",
                "role": "Project Viewer"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/projectMember"
            }
          },
          "projectCustomData": {
            "$ref": "#/components/schemas/customData"
          },
          "provider": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "example": "Test Provider 01"
              },
              "address1": {
                "type": "string",
                "example": "4642 Main Street"
              },
              "address2": {
                "type": "string",
                "nullable": true,
                "example": "Unit B"
              },
              "city": {
                "type": "string",
                "example": "San-Francisco"
              },
              "province": {
                "type": "string",
                "nullable": true,
                "example": "CA"
              },
              "postalCode": {
                "type": "string",
                "example": "90000"
              },
              "country": {
                "type": "string",
                "example": "United States"
              },
              "externalId": {
                "type": "string",
                "nullable": true,
                "example": "AHG0998"
              },
              "externalName": {
                "type": "string",
                "nullable": true,
                "example": "MVN"
              },
              "phase": {
                "type": "string"
              },
              "participants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "contactExternalId": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactFirstName": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactLastName": {
                      "type": "string",
                      "nullable": true
                    },
                    "contactEmail": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "example": {
                    "contactExternalId": "PGH0457",
                    "contactFirstName": "John",
                    "contactLastName": "Smith",
                    "contactEmail": "john.smith@example.com"
                  }
                }
              }
            }
          },
          "proposals": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "nullable": true,
                  "example": "Proposal name 01"
                },
                "versions": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/proposalDetails"
                  }
                }
              }
            }
          },
          "brief": {
            "$ref": "#/components/schemas/projectBrief"
          }
        }
      },
      "projectProviderDetailsResponse": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "providers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "name",
                      "id",
                      "phase"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "example": "Provider name 01"
                      },
                      "externalId": {
                        "type": "string",
                        "nullable": true,
                        "example": "ACM_43567890"
                      },
                      "externalName": {
                        "type": "string",
                        "nullable": true,
                        "example": "Provider name 01 Ltd"
                      },
                      "diversity": {
                        "type": "boolean",
                        "example": true
                      },
                      "diversityCertifications": {
                        "type": "array",
                        "example": [
                          "Minority owned business",
                          "Women owned business"
                        ],
                        "items": {
                          "type": "string"
                        }
                      },
                      "msa": {
                        "type": "boolean",
                        "example": true
                      },
                      "type": {
                        "type": "string",
                        "nullable": true,
                        "example": "PSL"
                      },
                      "phase": {
                        "type": "string",
                        "nullable": true,
                        "example": "Invited",
                        "enum": [
                          "Invite Started",
                          "Invited",
                          "NDA Completed",
                          "Conflicts Check Completed",
                          "Conflicts Indicated",
                          "Brief Viewed",
                          "Interested",
                          "Proposal Submitted",
                          "Declined",
                          "Excluded",
                          "Awarded"
                        ]
                      },
                      "matchType": {
                        "type": "string",
                        "example": "Matched by Globality"
                      },
                      "matchedDate": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "providerInvited": {
                        "type": "boolean",
                        "example": false
                      },
                      "providerInvitedApprovalRequestedDate": {
                        "type": "string",
                        "nullable": true,
                        "format": "date-time"
                      },
                      "providerInvitedDate": {
                        "type": "string",
                        "nullable": true,
                        "format": "date-time"
                      },
                      "providerInvitedBy": {
                        "type": "string",
                        "nullable": true,
                        "example": "thomas.williams@company.com"
                      },
                      "ndaRequested": {
                        "type": "boolean",
                        "example": false
                      },
                      "ndaCompletedDate": {
                        "type": "string",
                        "nullable": true,
                        "format": "date-time"
                      },
                      "interestedDate": {
                        "type": "string",
                        "nullable": true,
                        "format": "date-time"
                      },
                      "proposalSubmitted": {
                        "type": "boolean",
                        "example": false
                      },
                      "proposals": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "example": "proposal"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "status": {
                              "type": "string",
                              "example": "Proposal submitted"
                            },
                            "clientLegalEntity": {
                              "type": "string",
                              "example": "Company name"
                            },
                            "providerLegalEntity": {
                              "type": "string",
                              "nullable": true,
                              "example": "Provider name"
                            },
                            "startDate": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "endDate": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "servicesDescription": {
                              "type": "string",
                              "nullable": true
                            },
                            "panelServicesDescription": {
                              "type": "string",
                              "nullable": true,
                              "example": "Digital transformation services"
                            },
                            "providerFees": {
                              "type": "object",
                              "properties": {
                                "professionalFees": {
                                  "type": "number",
                                  "example": 312300
                                },
                                "taxAmount": {
                                  "type": "number",
                                  "example": 12332
                                },
                                "expenseAmount": {
                                  "type": "number",
                                  "example": 4444
                                },
                                "currency": {
                                  "type": "string",
                                  "nullable": true,
                                  "example": "USD"
                                }
                              }
                            },
                            "serviceFees": {
                              "type": "object",
                              "properties": {
                                "amount": {
                                  "type": "number",
                                  "example": 30000
                                },
                                "currency": {
                                  "type": "string",
                                  "nullable": true,
                                  "example": "USD"
                                }
                              }
                            },
                            "submittedDate": {
                              "type": "string",
                              "format": "date-time"
                            },
                            "approvedDate": {
                              "type": "string",
                              "nullable": true,
                              "format": "date-time"
                            },
                            "approvedBy": {
                              "type": "string",
                              "nullable": true
                            },
                            "award": {
                              "type": "object",
                              "properties": {
                                "status": {
                                  "type": "string",
                                  "nullable": true,
                                  "example": "Award Completed"
                                },
                                "awardApprovalRequestedDate": {
                                  "type": "string",
                                  "nullable": true,
                                  "format": "date-time"
                                },
                                "awardCompletedAt": {
                                  "type": "string",
                                  "nullable": true,
                                  "format": "date-time"
                                },
                                "awardCompletedBy": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "awardCustomData": {
                                  "$ref": "#/components/schemas/customData"
                                }
                              }
                            }
                          }
                        }
                      },
                      "participants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "contactExternalId": {
                              "type": "string",
                              "nullable": true
                            },
                            "contactFirstName": {
                              "type": "string",
                              "nullable": true
                            },
                            "contactLastName": {
                              "type": "string",
                              "nullable": true
                            },
                            "contactEmail": {
                              "type": "string",
                              "nullable": true
                            }
                          },
                          "example": {
                            "contactExternalId": "PGH0457",
                            "contactFirstName": "John",
                            "contactLastName": "Smith",
                            "contactEmail": "john.smith@example.com"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "projectBrief": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "example": "Example test project description"
          },
          "clientCategory": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "A0101",
              "B0123f"
            ]
          },
          "clientRegion": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "JKL",
              "LAX"
            ]
          },
          "costCenter": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "512",
              "123"
            ]
          },
          "organizationalUnit": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "TBFD",
              "BRIN"
            ]
          },
          "requestedProviders": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Provider name"
            }
          },
          "services": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Consulting"
            }
          },
          "industries": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Banking and Financial Services"
            }
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "budget": {
            "type": "object",
            "properties": {
              "maximum": {
                "type": "number",
                "example": 3100000
              },
              "minimum": {
                "type": "number",
                "example": 100000
              },
              "currency": {
                "type": "string",
                "example": "USD"
              }
            }
          },
          "projectDuration": {
            "type": "string",
            "example": "3-6 months"
          },
          "proposalsDue": {
            "type": "string",
            "format": "date-time"
          },
          "briefSubmittedDate": {
            "type": "string",
            "format": "date-time"
          },
          "briefSubmittedBy": {
            "type": "string",
            "example": "thomas.williams@company.com"
          },
          "projectCustomData": {
            "$ref": "#/components/schemas/customData"
          }
        }
      },
      "proposalDetails": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "example": "Proposal submitted"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "servicesDescription": {
            "type": "string",
            "nullable": true,
            "example": "Digital transformation services"
          },
          "panelServicesDescription": {
            "type": "string",
            "nullable": true,
            "example": "Digital transformation services"
          },
          "providerFees": {
            "type": "object",
            "properties": {
              "professionalFees": {
                "type": "number",
                "example": 312300
              },
              "taxAmount": {
                "type": "number",
                "example": 12332
              },
              "expensesAmount": {
                "type": "number",
                "example": 4444
              },
              "currency": {
                "type": "string",
                "example": "USD"
              }
            }
          },
          "serviceFees": {
            "type": "object",
            "properties": {
              "amount": {
                "type": "number",
                "example": 30000
              },
              "currency": {
                "type": "string",
                "example": "USD"
              }
            }
          },
          "milestones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string",
                  "nullable": true,
                  "example": "Mile Stone 01"
                },
                "dueDate": {
                  "type": "string",
                  "nullable": true,
                  "format": "date-time"
                }
              }
            }
          },
          "submittedDate": {
            "type": "string",
            "format": "date-time"
          },
          "approvedDate": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "award": {
            "type": "object",
            "properties": {
              "purchaseRequisitionId": {
                "type": "string",
                "nullable": true,
                "example": "ASDF01034"
              },
              "status": {
                "type": "string",
                "nullable": true,
                "example": "Award Completed"
              },
              "purchaseOrderId": {
                "type": "string",
                "nullable": true,
                "example": "RUD380"
              },
              "contractWorkspaceId": {
                "type": "string",
                "nullable": true,
                "example": "FF8383"
              },
              "awardCompletedAt": {
                "type": "string",
                "nullable": true,
                "format": "date-time"
              },
              "awardCustomData": {
                "$ref": "#/components/schemas/customData"
              }
            }
          }
        }
      },
      "fileTypeEnum": {
        "type": "string",
        "description": "File category returned in the `type` field of file objects.\nBRIEF and BRIEF_SCOPING are sourced from project brief context or Sphinx session goals.\n",
        "enum": [
          "BRIEF",
          "BRIEF_SCOPING",
          "NDA",
          "PRICING",
          "PROPOSAL",
          "QUESTIONNAIRE",
          "SOW",
          "TOS"
        ]
      },
      "fileTypeFilterEnum": {
        "type": "string",
        "description": "Supported values for the `type` query parameter when listing files.",
        "enum": [
          "BRIEF",
          "BRIEF_SCOPING",
          "NDA",
          "PRICING",
          "PROPOSAL",
          "QUESTIONNAIRE",
          "SOW",
          "TOS"
        ]
      },
      "file": {
        "type": "object",
        "example": {
          "id": "fa352c35-e727-419a-9b83-36998aaac11f",
          "type": "PROPOSAL",
          "name": "some-file.gif",
          "createdAt": "2023-12-01T04:17:31.770Z",
          "updatedAt": "2023-12-01T04:17:31.898Z",
          "description": "some description",
          "proposalId": "b94f483c-deed-4034-9823-9ad4d5560598",
          "proposalVersions": [
            4
          ],
          "providerId": "bafd7d89-59ba-4924-a176-953696e9fd33"
        },
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "47f627bc-9155-4289-885b-39a4bad036e6"
          },
          "type": {
            "$ref": "#/components/schemas/fileTypeEnum"
          },
          "name": {
            "type": "string",
            "description": "The name of the file",
            "example": "file name.gif"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the file was created",
            "example": "2023-12-01T04:17:31.770Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the file was last updated",
            "example": "2023-12-01T04:17:31.898Z"
          },
          "description": {
            "type": "string",
            "description": "The description of the file"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Download URL for the file"
          },
          "proposalId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the proposal this file is associated with, if applicable",
            "example": "b94f483c-deed-4034-9823-9ad4d5560598"
          },
          "proposalVersions": {
            "type": "array",
            "description": "Proposal version numbers this file is associated with",
            "items": {
              "type": "integer"
            },
            "example": [
              4
            ]
          },
          "providerId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the provider this file is associated with, if applicable",
            "example": "bafd7d89-59ba-4924-a176-953696e9fd33"
          }
        }
      },
      "filesResponse": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Total count of files matching the query parameters"
          },
          "offset": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Offset of the returned files"
          },
          "items": {
            "type": "array",
            "description": "List of files",
            "items": {
              "$ref": "#/components/schemas/file"
            }
          }
        }
      },
      "filesResponseList": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Total count of files matching the query parameters"
          },
          "offset": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Offset of the returned files"
          },
          "items": {
            "type": "array",
            "description": "List of files",
            "items": {
              "$ref": "#/components/schemas/file"
            }
          }
        },
        "example": {
          "count": 1,
          "offset": 0,
          "items": [
            {
              "id": "fa352c35-e727-419a-9b83-36998aaac11f",
              "type": "PROPOSAL",
              "name": "some-file.gif",
              "createdAt": "2023-12-01T03:46:12.950Z",
              "updatedAt": "2023-12-01T03:46:13.169Z",
              "description": "some description",
              "proposalId": "b94f483c-deed-4034-9823-9ad4d5560598",
              "proposalVersions": [
                4
              ],
              "providerId": "bafd7d89-59ba-4924-a176-953696e9fd33"
            }
          ]
        }
      },
      "fileUploadRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "File name"
          },
          "contextType": {
            "type": "string",
            "default": "provider",
            "enum": [
              "account",
              "project",
              "chatroom",
              "contract",
              "insights",
              "nondisclosure_agreement",
              "payment_request",
              "privacy_policy",
              "proposal",
              "provider",
              "task_order",
              "terms_and_conditions",
              "terms",
              "sow_template",
              "sow_tagged_template",
              "sow_draft",
              "questionnaire_templates",
              "commercial_terms",
              "pricing_sheet_response"
            ]
          },
          "description": {
            "type": "string"
          },
          "purpose": {
            "type": "string",
            "default": "NORMAL",
            "enum": [
              "CONTENT",
              "NORMAL",
              "TEST",
              "TUTORIAL",
              "REHEARSAL"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sha256Base64": {
            "type": "string"
          }
        }
      },
      "fileUploadLinkResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the uploading file"
          },
          "url": {
            "type": "string",
            "description": "URL to upload the file to"
          }
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Projects",
      "description": "Project management endpoints"
    },
    {
      "name": "Files",
      "description": "File management endpoints"
    }
  ],
  "paths": {
    "/v2/projects": {
      "post": {
        "summary": "Create a project",
        "operationId": "createProject",
        "description": "Create a new project from external system data.\n\n**Permissions Required**\n- `write:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Data required to create a project on the Globality platform. `projectSource` must be either `SOURCING_PROJECT` or `PURCHASE_REQUISITION`. Provide either `projectOwnerExternalId` or `projectOwnerEmail` to identify the project owner. When using `projectOwnerEmail` for a user who does not yet have a Globality account, `firstName` and `lastName` are also required.\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createProjectPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project already exists for this external source item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "href": {
                      "type": "string",
                      "format": "uri"
                    },
                    "projectSourceItemId": {
                      "type": "string"
                    },
                    "projectTitle": {
                      "type": "string"
                    },
                    "projectAlreadyCreated": {
                      "type": "boolean",
                      "example": true
                    }
                  }
                },
                "example": {
                  "projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "href": "https://app.prod.globality.com/client/project/3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "projectSourceItemId": "8474",
                  "projectTitle": "Test Project",
                  "projectAlreadyCreated": true
                }
              }
            }
          },
          "201": {
            "description": "Project created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "href": {
                      "type": "string",
                      "format": "uri"
                    },
                    "projectSourceItemId": {
                      "type": "string"
                    },
                    "projectTitle": {
                      "type": "string"
                    },
                    "projectAlreadyCreated": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                },
                "example": {
                  "projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "href": "https://app.prod.globality.com/client/project/3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "projectSourceItemId": "8474",
                  "projectTitle": "Test Project",
                  "projectAlreadyCreated": false
                }
              }
            }
          },
          "206": {
            "description": "Project created with validation warnings (see fieldValidations)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string"
                    },
                    "href": {
                      "type": "string"
                    },
                    "fieldValidations": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "href": "https://app.prod.globality.com/client/project/3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "projectSourceItemId": "8474",
                  "projectTitle": "Test Project",
                  "projectAlreadyCreated": false,
                  "message": "Project created successfully. See omitted values in fieldValidations",
                  "fieldValidations": [
                    "projectDescription: Out of range: min 30 and max 2500",
                    "projectPrivateBudget baselineSpend: Out of range: min 1 and max 9000000000000000",
                    "projectCustomData: Field and values are required"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request (validation error)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Validation error: `projectOwnerExternalId` or `projectOwnerEmail` are required."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 500,
                  "message": "Internal server error"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Search projects",
        "operationId": "searchProjects",
        "description": "Returns a filtered, paginated list of projects. Each page is sorted ascending by updatedAt.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20
            },
            "description": "Maximum number of projects to return."
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Number of projects to skip for pagination."
          },
          {
            "in": "query",
            "name": "created-after",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Unix timestamp; projects created after this time."
          },
          {
            "in": "query",
            "name": "created-before",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Unix timestamp; projects created before this time."
          },
          {
            "in": "query",
            "name": "updated-after",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Unix timestamp; projects updated after this time."
          },
          {
            "in": "query",
            "name": "updated-before",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Unix timestamp; projects updated before this time."
          },
          {
            "in": "query",
            "name": "phase",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PROJECT_INITIATED",
                "BRIEF_COMPLETED",
                "PROVIDERS_INVITED",
                "PROPOSALS_RECEIVED",
                "AWARDED"
              ]
            },
            "description": "Filter by project phase."
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ACTIVE",
                "PAUSED",
                "CANCELLED",
                "COMPLETED"
              ]
            },
            "description": "Filter by project status."
          },
          {
            "in": "query",
            "name": "is-external",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Filter by external (true) or internal (false) projects."
          },
          {
            "in": "query",
            "name": "include-archived",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "If true, include projects with resolution ARCHIVED; if false (default), exclude them."
          },
          {
            "in": "query",
            "name": "resolution",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ACTIVE",
                "ARCHIVED",
                "ABANDONED",
                "CLOSED",
                "REDACTED",
                "STALE"
              ]
            },
            "description": "Comma-separated list of resolution values to filter by (e.g. resolution=ACTIVE,ARCHIVED)."
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of projects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/searchProjectsResponse"
                },
                "example": {
                  "totalCount": 2,
                  "projects": [
                    {
                      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "href": "https://apis.prod.globality.com/v2/projects/3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "name": "Demo Project",
                      "createdAt": "2021-11-19T18:59:03.311Z",
                      "updatedAt": "2021-11-22T22:48:03.311Z",
                      "isExternal": false,
                      "status": "Active",
                      "phase": "Awarded",
                      "serviceProviderPhase": [
                        {
                          "providerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                          "providerPhase": "Awarded",
                          "awardCompletedAt": "2021-11-22T22:48:03.311Z"
                        }
                      ]
                    },
                    {
                      "id": "11b6db55-0352-4ef9-9013-96f8bd767d4c",
                      "href": "https://apis.prod.globality.com/v2/projects/11b6db55-0352-4ef9-9013-96f8bd767d4c",
                      "name": "Demo Project 2",
                      "createdAt": "2021-08-18T18:59:03.311Z",
                      "updatedAt": "2021-12-20T15:00:04.411Z",
                      "isExternal": true,
                      "status": "Active",
                      "phase": "Awarded",
                      "serviceProviderPhase": [
                        {
                          "providerId": "3fe8fbcc-463c-4a32-bd86-ce3bc6dad333",
                          "providerPhase": "Awarded",
                          "awardCompletedAt": "2021-12-20T15:00:04.411Z"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. invalid resolution or status)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Status: AWARD_DONE errorMessage: Project status mapping not found. Please provide valid status enum"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/provider/{providerId}": {
      "get": {
        "summary": "Retrieve project and provider data for awarded projects",
        "operationId": "retrieveProjectProvider",
        "description": "Retrieves project-provider info by project id and provider id.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          },
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the provider."
          }
        ],
        "responses": {
          "200": {
            "description": "Project and provider data including proposal and brief",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/projectProviderResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Project or provider ID not valid"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project or provider not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/provider/{providerId}/all-proposals": {
      "get": {
        "summary": "Retrieve project and provider data for awarded projects with all proposals",
        "operationId": "retrieveAllProjectProviderProposals",
        "description": "Retrieves project-provider data including all proposal versions by project id and provider id.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          },
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the provider."
          }
        ],
        "responses": {
          "200": {
            "description": "Project, provider, and all proposal versions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/projectProviderAllProposalsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Project or provider ID not valid"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project or provider not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}": {
      "get": {
        "summary": "Retrieve detailed project data including brief",
        "operationId": "retrieveProjectDetails",
        "description": "Retrieves project by id.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          }
        ],
        "responses": {
          "200": {
            "description": "Project details including brief",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/projectDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Project or provider ID not valid"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "patch": {
        "summary": "Update project status",
        "operationId": "updateProject",
        "description": "Update the status of an existing project.\n\n**Permissions Required**\n- `write:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Project status to update the project on the Globality platform. `status` is limited to the values `ACTIVE`, `PAUSED`, `CANCELLED`, and `COMPLETED`.\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateProjectPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project status updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "status": {
                      "type": "string",
                      "example": "Active"
                    }
                  }
                },
                "example": {
                  "projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "status": "Paused"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid status value)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Status: BadStatus errorMessage: Project status mapping not found. Please provide valid status enum."
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 403,
                  "message": "Cancelled project cannot be paused"
                }
              }
            }
          },
          "404": {
            "description": "Project not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Resource not found"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/project-provider-details": {
      "get": {
        "summary": "Retrieve detailed data for all providers in a project",
        "operationId": "retrieveProjectProviderDetails",
        "description": "Retrieves provider details for all providers on the project.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Projects"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          }
        ],
        "responses": {
          "200": {
            "description": "Project and list of provider details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/projectProviderDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Project or provider ID not valid"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/files": {
      "get": {
        "summary": "List files for a project",
        "operationId": "listProjectFiles",
        "description": "Returns files associated with the project (e.g. brief, contract). Use query param `type` to filter by context type.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Files"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/fileTypeFilterEnum"
            },
            "description": "Filter files by type. Available values: BRIEF, BRIEF_SCOPING, NDA, PRICING, PROPOSAL, QUESTIONNAIRE, SOW, TOS"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The limit of the response. Useful for paginating."
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The offset to start at reading current page. Useful for paginating."
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/filesResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "post": {
        "summary": "Request file upload link for a project",
        "operationId": "uploadFileLink",
        "description": "Get an upload link to upload a file to the project brief workspace.\nProject must be active. Requires `name` in body.\n\n**Permissions Required**\n- `write:project`\n",
        "tags": [
          "Files"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the project."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/fileUploadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Upload link and metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/fileUploadLinkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. missing name, project not active)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Bad request"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project or workspace not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project not found"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/provider/{providerId}/files": {
      "get": {
        "summary": "List project files submitted by the provider",
        "operationId": "listProjectProviderFiles",
        "description": "Returns files for the given project and provider (e.g. proposal files). Use query param `type` to filter.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Files"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/fileTypeFilterEnum"
            },
            "description": "Filter files by type. Available values: BRIEF, BRIEF_SCOPING, NDA, PRICING, PROPOSAL, QUESTIONNAIRE, SOW, TOS"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The limit of the response. Useful for paginating."
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The offset to start at reading current page. Useful for paginating."
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/filesResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project or provider not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project or provider not found"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/projects/{projectId}/provider/{providerId}/all-proposals/files": {
      "get": {
        "summary": "List project files submitted by the provider for all proposal versions",
        "operationId": "listProjectProviderAllProposalsFiles",
        "description": "Returns files for all proposal versions of the given project-provider. Use query param `type` to filter.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Files"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/fileTypeFilterEnum"
            },
            "description": "Filter files by type. Available values: BRIEF, BRIEF_SCOPING, NDA, PRICING, PROPOSAL, QUESTIONNAIRE, SOW, TOS"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The limit of the response. Useful for paginating."
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "The offset to start at reading current page. Useful for paginating."
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of files (all proposal versions)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/filesResponseList"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "Project or provider not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 404,
                  "message": "Project or provider not found"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/files/links": {
      "post": {
        "summary": "Get download links for files",
        "operationId": "generateFileDownloadLinks",
        "description": "Returns download URLs for the given file IDs. Client must have read access to the projects the files belong to.\n\n**Permissions Required**\n- `read:project`\n",
        "tags": [
          "Files"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "ids"
                ],
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "File IDs (max 100)",
                    "example": [
                      "f195f7f6-9875-4aa2-8913-7af185b9c88f",
                      "a195f7f6-9875-4aa2-8913-7af185b9c88f"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Map of file ID to download URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "example": {
                  "f195f7f6-9875-4aa2-8913-7af185b9c88f": "https://some.test/some-very-long-pre-signed-download-url",
                  "a195f7f6-9875-4aa2-8913-7af185b9c88f": "https://some.test/some-very-long-pre-signed-download-url"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. empty ids, too many ids, or access denied)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": 400,
                  "message": "Bad request"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  }
}