{"swagger":"2.0","info":{"title":"buildagil","description":"","version":"1.0"},"host":"api.buildagil.com","basePath":"/","schemes":["https"],"consumes":["application/json"],"produces":["application/json"],"paths":{"/bcf/3.0/projects/{projectId}/subscriptions":{"get":{"summary":"List Subscriptions","description":"Lists the webhook subscriptions created by the calling user for this project. Subscriptions of other users are not returned. Requires membership in the project (any project role).","operationId":"ListSubscriptions","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/Subscription"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/topic.created":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/TopicCreatedPayload"}},"post":{"summary":"When a topic is created","description":"Registers a webhook subscription for the `topic.created` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToTopicCreated","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/topic.changed":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/TopicChangedPayload"}},"post":{"summary":"When a topic is changed","description":"Registers a webhook subscription for the `topic.changed` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToTopicChanged","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/user.created":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/UserCreatedPayload"}},"post":{"summary":"When a user is created","description":"Registers a webhook subscription for the `user.created` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToUserCreated","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/document.created":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/DocumentCreatedPayload"}},"post":{"summary":"When a document is created","description":"Registers a webhook subscription for the `document.created` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToDocumentCreated","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/document.moved":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/DocumentMovedPayload"}},"post":{"summary":"When a document is moved","description":"Registers a webhook subscription for the `document.moved` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToDocumentMoved","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/document.content_changed":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/DocumentContentChangedPayload"}},"post":{"summary":"When a document's content is changed","description":"Registers a webhook subscription for the `document.content_changed` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToDocumentContentChanged","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/document.metadata_changed":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/DocumentMetadataChangedPayload"}},"post":{"summary":"When a document's metadata is changed","description":"Registers a webhook subscription for the `document.metadata_changed` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToDocumentMetadataChanged","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/meeting.created":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/MeetingEventPayload"}},"post":{"summary":"When a meeting is created","description":"Registers a webhook subscription for the `meeting.created` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToMeetingCreated","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/meeting.changed":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/MeetingEventPayload"}},"post":{"summary":"When a meeting is changed","description":"Registers a webhook subscription for the `meeting.changed` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToMeetingChanged","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/milestone.created":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/MilestoneEventPayload"}},"post":{"summary":"When a milestone is created","description":"Registers a webhook subscription for the `milestone.created` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToMilestoneCreated","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/milestone.changed":{"x-ms-notification-content":{"description":"Event payload delivered to the flow.","schema":{"$ref":"#/definitions/MilestoneEventPayload"}},"post":{"summary":"When a milestone is changed","description":"Registers a webhook subscription for the `milestone.changed` event of a project. Requires membership in the project (any project role). Failed deliveries are retried up to 5 times with backoff; if all retries fail, the subscription stays active and is retried again on the next occurrence.\n\nThe combination of project, event and targetUrl is unique: a target URL can only be subscribed once per event. If a subscription for this target already exists (active or deactivated), the request is rejected with 409; delete the existing subscription before re-adding.\n\nYour target URL must confirm ownership before the subscription is created: it receives a POST with a JSON body containing a `validationToken` and has to answer within 5 seconds with HTTP 200, returning that token as the response body.","operationId":"SubscribeToMilestoneChanged","x-ms-trigger":"single","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["targetUrl"],"properties":{"targetUrl":{"type":"string","x-ms-notification-url":true,"x-ms-visibility":"internal"},"description":{"type":"string","description":"Optional description of the subscription."}}}}],"responses":{"200":{"description":"OK (subscription created; the `Location` header references the subscription)","schema":{"$ref":"#/definitions/Subscription"}},"400":{"description":"Bad Request (invalid body, or the target URL did not confirm the validation handshake)"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden (project membership required)"},"409":{"description":"Conflict (a subscription for this project, event and targetUrl already exists; delete it before re-adding)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/subscriptions/{subscriptionId}":{"get":{"summary":"Get Subscription","description":"Returns a single webhook subscription by id. Only the user who created the subscription can retrieve it. Requires membership in the project (any project role).","operationId":"GetSubscription","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"subscriptionId","in":"path","required":true,"type":"string","description":"The subscription id"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Subscription"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]},"delete":{"summary":"Delete Subscription","description":"Deletes a webhook subscription. Only the user who created the subscription can delete it. Requires membership in the project (any project role).","operationId":"DeleteSubscription","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"subscriptionId","in":"path","required":true,"type":"string","description":"The subscription id"}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Subscriptions"]}},"/bcf/3.0/projects/{projectId}/documents":{"post":{"summary":"Upload Document","description":"Upload a new document to a project. This operation is only possible if the server returns the createDocument flag in the project authorization. The request body is the raw binary content of the file.","operationId":"UploadDocument","consumes":["application/octet-stream"],"parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"filename","in":"query","required":true,"type":"string","description":"The filename of the document, e.g. `report.pdf`. Required; must be a valid filename without path separators."},{"name":"folder_url","in":"query","required":false,"type":"string","description":"Optional target folder path relative to the project's documents root. Must start with /documents and may contain nested folders, e.g. /documents/models/architecture, but no '.' / '..' segments."},{"name":"Content-Length","in":"header","required":false,"type":"integer","format":"int64","description":"Optional size of the file in bytes. May be omitted for chunked transfer encoding."},{"name":"body","in":"body","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"201":{"description":"Created","schema":{"type":"object","properties":{"guid":{"type":"string"},"filename":{"type":"string"},"folder_url":{"type":"string"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or project doesn't exist)"},"409":{"description":"Conflict (a document with that filename already exists in the target folder)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Documents"]},"get":{"summary":"Get Documents","description":"Retrieve a collection of documents of a project.","operationId":"GetDocuments","tags":["Documents"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"$filter","in":"query","required":false,"description":"Filtering the following fields with OData v4 syntax: creation_author, modified_author, file_type, folder_url, status, creation_date (Format: YYYY-MM-DDTHH:mm:ss.sssZ), modified_date (Format: YYYY-MM-DDTHH:mm:ss.sssZ)","type":"string"},{"name":"$orderby","in":"query","required":false,"description":"Ordering the following fields with OData v4 syntax: creation_date, modified_date, folder_url","type":"string"},{"name":"$top","in":"query","required":false,"description":"Number of results to return with OData v4 syntax (if no value is set, 100 results will be returned by default)","type":"integer"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/document_GET"}}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/documents/{documentId}":{"put":{"summary":"Update Document Content","description":"Update the binary content of an existing document. This operation is only possible if the server returns the updateContent flag in the document authorization. The request body is the raw binary content of the new file version; the filename, folder, and metadata are preserved.","operationId":"UpdateDocumentContent","consumes":["application/octet-stream"],"parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"documentId","in":"path","required":true,"type":"string","description":"The document guid"},{"name":"Content-Length","in":"header","required":false,"type":"integer","format":"int64","description":"Optional size of the file in bytes. May be omitted for chunked transfer encoding."},{"name":"body","in":"body","required":true,"schema":{"type":"string","format":"binary"}}],"responses":{"200":{"description":"OK","schema":{"type":"object","properties":{"guid":{"type":"string"},"filename":{"type":"string"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Documents"]},"get":{"summary":"Get Document","description":"Retrieve a single document (binary).","operationId":"GetDocument","tags":["Documents"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"documentId","in":"path","required":true,"description":"The document id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string","format":"binary"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/documents/{documentId}/metadata":{"get":{"summary":"Get Document Metadata","description":"Retrieve the metadata of a single document.","operationId":"GetDocumentMetadata","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"documentId","in":"path","required":true,"type":"string","description":"The document id"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Document"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Documents"]},"put":{"summary":"Update Document Metadata","description":"Update the editable metadata of a document. This operation is only possible if the server returns the updateMetadata flag in the document authorization. This is a partial update: only the fields present in the request body are modified, all others stay unchanged.","operationId":"UpdateDocumentMetadata","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"documentId","in":"path","required":true,"type":"string","description":"The document id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","properties":{"filename":{"type":"string","description":"New file name (including the extension). Renames the document. The file extension cannot be changed and must match the current one."},"status":{"type":"string","description":"Document status. 'Approved' is not allowed here - it can only be reached via an assigned review task.","enum":["Draft","Released","Review","Invalid","No Status"]},"description_1":{"type":"string","description":"Free text description 1. Only allowed if active in the project."},"description_2":{"type":"string","description":"Free text description 2. Only allowed if active in the project."},"labels_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the general document categories."},"labels_group_1_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 1. Only allowed if the group is active in the project."},"labels_group_2_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 2. Only allowed if the group is active in the project."},"labels_group_3_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 3. Only allowed if the group is active in the project."},"labels_group_4_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 4. Only allowed if the group is active in the project."},"labels_group_5_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 5. Only allowed if the group is active in the project."},"labels_group_6_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 6. Only allowed if the group is active in the project."},"labels_group_7_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 7. Only allowed if the group is active in the project."},"labels_group_8_id":{"type":"array","items":{"type":"string"},"description":"GUIDs of the categories for label group 8. Only allowed if the group is active in the project."}}}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Document"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"409":{"description":"Conflict (a file with the new name already exists in the folder)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Documents"]}},"/bcf/3.0/projects/{projectId}/documents/{documentId}/move":{"post":{"summary":"Move Document","description":"Move a document to a different folder within the project. This operation is only possible if the server returns the move flag in the document authorization. The target folder is specified via folder_url in the request body.","operationId":"MoveDocument","parameters":[{"name":"projectId","in":"path","required":true,"type":"string","description":"The project id"},{"name":"documentId","in":"path","required":true,"type":"string","description":"The document id"},{"name":"body","in":"body","required":true,"schema":{"type":"object","required":["folder_url"],"properties":{"folder_url":{"type":"string","description":"Target folder path. Must start with /documents."},"overwrite":{"type":"boolean","description":"If true, replace an existing file with the same name in the target folder. Defaults to false (returns 409 on collision)."}}}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Document"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (file or folder not found)"},"409":{"description":"Conflict (a file with the same name already exists in the target folder; set overwrite=true to replace it)"},"429":{"$ref":"#/responses/TooManyRequests"}},"tags":["Documents"]}},"/foundation/versions":{"get":{"summary":"Get Versions","description":"Returns a list of all supported openCDE APIs and their versions.","operationId":"GetVersions","tags":["Foundation"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/versions_GET"}}}}},"/foundation/1.0/auth":{"get":{"summary":"Get Authentication Information","description":"Returns the authentication information","operationId":"GetAuthenticationInformation","tags":["Foundation"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/authorization_GET"}}}}},"/bcf/3.0/projects":{"get":{"summary":"Get Projects","description":"Retrieve a collection of all projects.","operationId":"GetProjects","tags":["Projects"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/project_GET"}},"401":{"description":"Unauthorized"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}":{"get":{"summary":"Get Project","description":"Retrieve a single project.","operationId":"GetProject","tags":["Projects"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/project_GET"}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/extensions":{"get":{"summary":"Get Project Extensions","description":"Retrieve the extensions of a project.","operationId":"GetProjectExtensions","tags":["Projects"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/extensions_GET"}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics":{"get":{"summary":"Get Topics","description":"Retrieve a collection of topics of a project.","operationId":"GetTopics","tags":["Topics"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"$filter","in":"query","required":false,"description":"Filtering the following fields with OData v4 syntax: creation_author, modified_author, assigned_to, topic_status, topic_type, creation_date (Format: YYYY-MM-DDTHH:mm:ss.sssZ), modified_date (Format: YYYY-MM-DDTHH:mm:ss.sssZ), labels","type":"string"},{"name":"$orderby","in":"query","required":false,"description":"Ordering the following fields with OData v4 syntax: creation_date, modified_date","type":"string"},{"name":"$top","in":"query","required":false,"description":"Number of results to return with OData v4 syntax (if no value is set, 100 results will be returned by default)","type":"integer"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/topic_GET"}}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"post":{"summary":"Add Topic","description":"Add a topic to a project. This operation is only possible if the server returns the createTopic flag in the project authorization.","operationId":"AddTopic","tags":["Topics"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/topic_POST_PUT"}}],"responses":{"201":{"description":"Created","schema":{"type":"array","items":{"$ref":"#/definitions/topic_GET"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}":{"get":{"summary":"Get Topic","description":"Retrieve a single topic of a project.","operationId":"GetTopic","tags":["Topics"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/topic_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"put":{"summary":"Modify Topic","description":"Modify a topic of a project. This operation is only possible if the server returns the update flag in the topic authorization. The topic has to be updated as whole. There is no partial update.","operationId":"ModifyTopic","tags":["Topics"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/topic_POST_PUT"}}],"responses":{"200":{"description":"Created","schema":{"type":"array","items":{"$ref":"#/definitions/topic_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/checkpoints":{"get":{"summary":"Get Checkpoints","description":"Retrieve a collection of all checkpoints of a topic.","operationId":"GetCheckpoints","tags":["Topic Checkpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/checkpoints"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"post":{"summary":"Add Checkpoints","description":"Add checkpoints to a topic. This operation is only possible if the server returns the createCheckpoints flag in the topic authorization.","operationId":"AddCheckpoints","tags":["Topic Checkpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/checkpoints_POST"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/comments":{"get":{"summary":"Get Comments","description":"Retrieve a collection of comments of a topic.","operationId":"GetComments","tags":["Topic Comments"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"$filter","in":"query","required":false,"description":"Filtering the following fields with Odata v4 syntax: author, date (Format: YYYY-MM-DDTHH:mm:ss.sssZ)","type":"string"},{"name":"$orderby","in":"query","required":false,"description":"Ordering the following fields with OData v4 syntax: date","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/comment_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"post":{"summary":"Add Comment","description":"Add a comment to a topic. This operation is only possible if the server returns the createComment flag in the topic authorization.","operationId":"AddComment","tags":["Topic Comments"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/comment_POST_PUT"}}],"responses":{"201":{"description":"OK","schema":{"$ref":"#/definitions/comment_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/comments/{commentId}":{"get":{"summary":"Get Comment","description":"Retrieve a single comment of a topic.","operationId":"GetComment","tags":["Topic Comments"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"commentId","in":"path","required":true,"description":"The comment id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/comment_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"delete":{"summary":"Delete Comment","description":"Deletes a comment of a topic. This operation is only possible if the server returns the delete flag in the comment authorization.","operationId":"DeleteComment","tags":["Topic Comments"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"commentId","in":"path","required":true,"description":"The comment id","type":"string"}],"responses":{"200":{"description":"Comment deleted."},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints":{"get":{"summary":"Get Viewpoints","description":"Retrieve a collection of all viewpoints of a topic.","operationId":"GetViewpoints","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"}],"responses":{"201":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/viewpoint_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"post":{"summary":"Add Viewpoint","description":"Add a viewpoint to a topic. This operation is only possible if the server returns the createViewpoint flag in the topic authorization.","operationId":"AddViewpoint","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/viewpoint_POST"}}],"responses":{"201":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/viewpoint_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints/{viewpointId}":{"get":{"summary":"Get Viewpoint","description":"Retrieve a single viewpoint of a topic.","operationId":"GetViewpoint","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"viewpointId","in":"path","required":true,"description":"The viewpoint id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/viewpoint_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints/{viewpointId}/snapshot":{"get":{"summary":"Get Viewpoint Snapshot","description":"Retrieve the snapshot of a viewpoint as image file. A viewpoint contains a snapshot if there is a snapshot_type in the viewpoint.","operationId":"GetViewpointSnapshot","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"viewpointId","in":"path","required":true,"description":"The viewpoint id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string","format":"binary"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints/{viewpointId}/selection":{"get":{"summary":"Get Viewpoint Selection","description":"Retrieve a collection of all selected components in a viewpoint.","operationId":"GetViewpointSelection","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"viewpointId","in":"path","required":true,"description":"The viewpoint id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/selection_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints/{viewpointId}/coloring":{"get":{"summary":"Get Viewpoint Coloring","description":"Retrieve a collection of all colored components in a viewpoint.","operationId":"GetViewpointColoring","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"viewpointId","in":"path","required":true,"description":"The viewpoint id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/coloring_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/viewpoints/{viewpointId}/visibility":{"get":{"summary":"Get Viewpoint Visibility","description":"Retrieve visibility of components in a viewpoint.","operationId":"GetViewpointVisibility","tags":["Topic Viewpoints"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"viewpointId","in":"path","required":true,"description":"The viewpoint id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/visibility_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/attachments":{"post":{"summary":"Add Attachment","description":"Add an attachment to a topic. This operation is only possible if the server returns the createAttachment flag in the topic authorization.","operationId":"AddAttachment","tags":["Topic Attachment"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"description":"The filename must be set without file extension. The file type / file extension can be any and must be specified in the 'type' field. The file must be attached using a base64 string in the 'data' field.","schema":{"$ref":"#/definitions/attachment_POST"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/voice_message":{"post":{"summary":"Add Voice Message","description":"Add a voice message to a topic. This operation is only possible if the server returns the createVoiceMessage flag in the topic authorization.","operationId":"AddVoiceMessage","tags":["Topic Voice Message"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"description":"The file type / file extension can be 'ogg' or 'mp3' and must be specified in the 'type' field. The file must be attached using a base64 string in the 'data' field.","schema":{"$ref":"#/definitions/voice_message_POST"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/media":{"post":{"summary":"Add Media","description":"Add media to a topic. This operation is only possible if the topic type is 'Documentation Log', 'Incident Log' or 'Deficiency Log' and the server returns the createMedia flag in the topic authorization.","operationId":"AddMedia","tags":["Topic Media"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"description":"The file type / file extension can be an image or video and must be specified in the 'type' field. The file must be attached using a base64 string in the 'data' field.","schema":{"$ref":"#/definitions/media_POST"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/files":{"get":{"summary":"Get Files","description":"Retrieve a collection of all files of a topic.","operationId":"GetFiles","tags":["Topic Files"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/file_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"put":{"summary":"Modify Files","description":"Modify all files of a topic. This operation is only possible if the server returns the updateFiles flag in the topic authorization. The files have to be updated as whole. There is no partial update.","operationId":"ModifyFiles","tags":["Topic Files"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/file_PUT"}}}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/file_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/topics/{topicId}/document_references":{"get":{"summary":"Get Document References","description":"Retrieve a collection of all documents references of a topic.","operationId":"GetDocumentReferences","tags":["Topic Document References"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/document_reference_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}},"post":{"summary":"Add Document References","description":"Add document references to a topic. This operation is only possible if the server returns the createDocumentReferences flag in the topic authorization.","operationId":"AddDocumentReferences","tags":["Topic Document References"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"topicId","in":"path","required":true,"description":"The topic id","type":"string"},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/document_reference_POST"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/meetings":{"get":{"summary":"Get Meetings","description":"Retrieve a collection of all meetings of a project.","operationId":"GetMeetings","tags":["Meetings"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/meeting_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/meetings/{meetingId}":{"get":{"summary":"Get Meeting","description":"Retrieve a single meeting.","operationId":"GetMeeting","tags":["Meetings"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"meetingId","in":"path","required":true,"description":"The meeting id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/meeting_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/milestones":{"get":{"summary":"Get Milestones","description":"Retrieve a collection of all milestones of a project.","operationId":"GetMilestones","tags":["Milestones"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/milestone_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/milestones/{milestoneId}":{"get":{"summary":"Get Milestone","description":"Retrieve a single milestone.","operationId":"GetMilestone","tags":["Milestones"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"milestoneId","in":"path","required":true,"description":"The milestone id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/milestone_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/documents/{documentId}/versions":{"get":{"summary":"Get Document Versions","description":"Retrieve the version history of a document.","operationId":"GetDocumentVersions","tags":["Documents"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"documentId","in":"path","required":true,"description":"The document id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/document_version_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/documents/{documentId}/versions/{versionIndex}":{"get":{"summary":"Get Document Version","description":"Retrieve a single document version (binary).","operationId":"GetDocumentVersion","tags":["Documents"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"documentId","in":"path","required":true,"description":"The document id","type":"string"},{"name":"versionIndex","in":"path","required":true,"description":"The document version index","type":"integer"}],"responses":{"200":{"description":"OK","schema":{"type":"string","format":"binary"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/users":{"get":{"summary":"Get Users","description":"Retrieve a collection of all users of a project.","operationId":"GetUsers","tags":["Users"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/user_GET"}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or item doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}},"/bcf/3.0/projects/{projectId}/users/{userId}":{"get":{"summary":"Get User","description":"Retrieve a single user of a project by guid.","operationId":"GetUser","tags":["Users"],"parameters":[{"name":"projectId","in":"path","required":true,"description":"The project id","type":"string"},{"name":"userId","in":"path","required":true,"description":"The guid of the user.","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/user_GET"}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found (user has no access or doesn't exist)"},"429":{"$ref":"#/responses/TooManyRequests"}}}}},"definitions":{"Subscription":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"targetUrl":{"type":"string"},"event":{"type":"string"},"description":{"type":"string"},"createDate":{"type":"string","format":"date-time"},"firstFailed":{"type":"string","format":"date-time","description":"Timestamp of the first delivery failure since the last successful delivery. Empty if the last delivery attempt succeeded (or none has happened yet). Not reset on repeated failures, only when a delivery succeeds again."}}},"TopicCreatedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"topic.created\"."},"projectId":{"type":"string","description":"The ID of the project the topic belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the created topic."},"data":{"type":"object","description":"Topic-specific payload.","properties":{"topic_type":{"type":"string","description":"The topic type."}}}}},"TopicChangedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"topic.changed\"."},"projectId":{"type":"string","description":"The ID of the project the topic belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the changed topic."},"data":{"type":"object","description":"Topic-specific payload.","properties":{"topic_type":{"type":"string","description":"The topic type."}}}}},"UserCreatedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"user.created\"."},"projectId":{"type":"string","description":"The ID of the project the user belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the created user."},"data":{"type":"object","description":"User-specific payload.","properties":{"role":{"type":"string","description":"The project role of the created user."}}}}},"DocumentCreatedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"document.created\"."},"projectId":{"type":"string","description":"The ID of the project the document belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the created document."},"data":{"type":"object","description":"Document-specific payload.","properties":{"path":{"type":"string","description":"The path of the document."},"filename":{"type":"string","description":"The filename of the document."}}}}},"DocumentMovedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"document.moved\"."},"projectId":{"type":"string","description":"The ID of the project the document belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the moved document."},"data":{"type":"object","description":"Document-specific payload.","properties":{"path":{"type":"string","description":"The new path of the document after the move."},"filename":{"type":"string","description":"The filename of the moved document."},"previousPath":{"type":"string","description":"The path of the document before the move."}}}}},"DocumentContentChangedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"document.content_changed\"."},"projectId":{"type":"string","description":"The ID of the project the document belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the document whose content changed."},"data":{"type":"object","description":"Document-specific payload.","properties":{"path":{"type":"string","description":"The path of the document."},"filename":{"type":"string","description":"The filename of the document."}}}}},"DocumentMetadataChangedPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, always \"document.metadata_changed\"."},"projectId":{"type":"string","description":"The ID of the project the document belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the document whose metadata changed."},"data":{"type":"object","description":"Document-specific payload.","properties":{"path":{"type":"string","description":"The path of the document."},"filename":{"type":"string","description":"The filename of the document."}}}}},"MeetingEventPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, either \"meeting.created\" or \"meeting.changed\"."},"projectId":{"type":"string","description":"The ID of the project the meeting belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the affected meeting."},"data":{"type":"object","description":"Meeting-specific payload.","properties":{"meeting_type":{"type":"string","description":"The name of the meeting type."},"meeting_type_id":{"type":"string","description":"The buildagil GUID of the meeting type."}}}}},"MilestoneEventPayload":{"type":"object","properties":{"event":{"type":"string","description":"Event type, either \"milestone.created\" or \"milestone.changed\"."},"projectId":{"type":"string","description":"The ID of the project the milestone belongs to."},"guid":{"type":"string","description":"The buildagil GUID of the affected milestone."},"data":{"type":"object","description":"Empty object; no additional data is delivered for milestone events."}}},"Document":{"type":"object","properties":{"guid":{"type":"string"},"filename":{"type":"string"},"file_type":{"type":"string"},"folder_url":{"type":"string"},"version_number":{"type":"string"},"version_index":{"type":"integer"},"creation_date":{"type":"string","format":"date-time"},"creation_author":{"type":"string"},"modified_date":{"type":"string","format":"date-time"},"modified_author":{"type":"string"},"size_in_bytes":{"type":"integer"},"status":{"type":"string","enum":["Draft","Released","Approved","Review","Invalid","No Status"]},"description_1":{"type":"string"},"description_2":{"type":"string"},"labels_group_1":{"type":"array","items":{"type":"string"}},"labels_group_1_id":{"type":"array","items":{"type":"string"}},"labels_group_2":{"type":"array","items":{"type":"string"}},"labels_group_2_id":{"type":"array","items":{"type":"string"}},"labels_group_3":{"type":"array","items":{"type":"string"}},"labels_group_3_id":{"type":"array","items":{"type":"string"}},"labels_group_4":{"type":"array","items":{"type":"string"}},"labels_group_4_id":{"type":"array","items":{"type":"string"}},"labels_group_5":{"type":"array","items":{"type":"string"}},"labels_group_5_id":{"type":"array","items":{"type":"string"}},"labels_group_6":{"type":"array","items":{"type":"string"}},"labels_group_6_id":{"type":"array","items":{"type":"string"}},"labels_group_7":{"type":"array","items":{"type":"string"}},"labels_group_7_id":{"type":"array","items":{"type":"string"}},"labels_group_8":{"type":"array","items":{"type":"string"}},"labels_group_8_id":{"type":"array","items":{"type":"string"}}}},"versions_GET":{"type":"object","properties":{"versions":{"type":"array","items":{"type":"object"}}}},"authorization_GET":{"type":"object","properties":{"oauth2_auth_url":{"type":"string"},"oauth2_token_url":{"type":"string"},"http_basic_supported":{"type":"boolean"},"supported_oauth2_flows":{"type":"array","items":{"type":"string"}}}},"project_GET":{"type":"object","required":["project_Id","name"],"properties":{"project_Id":{"type":"string"},"name":{"type":"string"},"number":{"type":"string"},"location":{"type":"string"},"authorization":{"type":"object","properties":{"project_actions":{"$ref":"#/definitions/project_actions"}}}}},"extensions_GET":{"type":"object","required":["topic_type","topic_status","topic_label","topic_label_id","document_label","document_label_id","checkpoint_status","users","user_roles","meeting_type","meeting_type_id","meeting_label","meeting_label_id","milestone_label","milestone_label_id","project_actions","topic_actions","comment_actions","viewpoint_actions","document_actions"],"properties":{"topic_type":{"type":"array","items":{"type":"string"}},"topic_status":{"type":"array","items":{"type":"string"}},"topic_label":{"type":"array","items":{"type":"string"}},"topic_label_id":{"type":"array","items":{"type":"string"}},"document_label":{"type":"array","items":{"type":"string"}},"document_label_id":{"type":"array","items":{"type":"string"}},"document_label_group_1":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_2":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_3":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_4":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_5":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_6":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_7":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_label_group_8":{"type":"object","properties":{"title":{"type":"string"},"label":{"type":"array","items":{"type":"string"}},"label_id":{"type":"array","items":{"type":"string"}}}},"document_description_1":{"type":"object","properties":{"title":{"type":"string"}}},"document_description_2":{"type":"object","properties":{"title":{"type":"string"}}},"checkpoint_status":{"type":"array","items":{"type":"string"}},"users":{"type":"array","items":{"type":"string"}},"user_roles":{"type":"array","items":{"type":"string"}},"meeting_type":{"type":"array","items":{"type":"string"}},"meeting_type_id":{"type":"array","items":{"type":"string"}},"meeting_label":{"type":"array","items":{"type":"string"}},"meeting_label_id":{"type":"array","items":{"type":"string"}},"milestone_label":{"type":"array","items":{"type":"string"}},"milestone_label_id":{"type":"array","items":{"type":"string"}},"project_actions":{"$ref":"#/definitions/project_actions"},"topic_actions":{"$ref":"#/definitions/topic_actions"},"comment_actions":{"$ref":"#/definitions/comment_actions"},"viewpoint_actions":{"$ref":"#/definitions/viewpoint_actions"},"document_actions":{"$ref":"#/definitions/document_actions"}}},"topic_GET":{"type":"object","required":["guid","title","creation_date","creation_author"],"properties":{"guid":{"type":"string"},"topic_type":{"type":"string","enum":["Task","Model Issue","Documentation Log","Incident Log","Deficiency Log","Topic","Information","Decision"]},"topic_status":{"type":"string","enum":["Open","Closed","Draft"]},"title":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"labels_id":{"type":"array","items":{"type":"string"}},"creation_date":{"type":"string"},"creation_author":{"type":"string"},"modified_date":{"type":"string"},"modified_author":{"type":"string"},"assigned_to":{"type":"string"},"description":{"type":"string"},"gps_coordinates":{"type":"string"},"due_date":{"type":"string"},"document_references":{"type":"array","items":{"type":"string"}},"checkpoints":{"$ref":"#/definitions/checkpoints"},"authorization":{"type":"object","properties":{"topic_actions":{"$ref":"#/definitions/topic_actions"}}}}},"topic_POST_PUT":{"type":"object","required":["title"],"properties":{"topic_type":{"type":"string"},"topic_status":{"type":"string"},"reference_links":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"assigned_to":{"type":"string"},"description":{"type":"string"},"gps_coordinates":{"type":"string"},"capture_date":{"type":"string"},"due_date":{"type":"string"}}},"checkpoints":{"type":"array","items":{"$ref":"#/definitions/checkpoint"}},"checkpoints_POST":{"type":"array","items":{"type":"object","required":["guid","checkpoint_status"],"properties":{"guid":{"type":"string"},"checkpoint_status":{"type":"string","enum":["Open","Done"]}}}},"comment_GET":{"type":"object","required":["guid","date","author","comment","topic_guid"],"properties":{"guid":{"type":"string"},"date":{"type":"string"},"author":{"type":"string"},"comment":{"type":"string"},"topic_guid":{"type":"string"},"viewpoint_guid":{"type":"string"},"authorization":{"type":"object","properties":{"comment_actions":{"$ref":"#/definitions/comment_actions"}}}}},"comment_POST_PUT":{"type":"object","required":["comment"],"properties":{"comment":{"type":"string"},"viewpoint_guid":{"type":"string"}}},"viewpoint_GET":{"type":"object","required":["guid"],"properties":{"guid":{"type":"string"},"orthogonal_camera":{"$ref":"#/definitions/orthogonal_camera"},"perspective_camera":{"$ref":"#/definitions/perspective_camera"},"lines":{"type":"array","items":{"$ref":"#/definitions/line"}},"clipping_planes":{"type":"array","items":{"$ref":"#/definitions/clipping_plane"}},"snapshot":{"$ref":"#/definitions/snapshot"},"files":{"$ref":"#/definitions/files"},"authorization":{"type":"object","properties":{"viewpoint_actions":{"$ref":"#/definitions/viewpoint_actions"}}}}},"viewpoint_POST":{"type":"object","properties":{"orthogonal_camera":{"$ref":"#/definitions/orthogonal_camera"},"perspective_camera":{"$ref":"#/definitions/perspective_camera"},"lines":{"type":"array","items":{"$ref":"#/definitions/line"}},"clipping_planes":{"type":"array","items":{"$ref":"#/definitions/clipping_plane"}},"components":{"$ref":"#/definitions/components"},"snapshot":{"$ref":"#/definitions/snapshot"},"files":{"$ref":"#/definitions/files"}}},"selection_GET":{"type":"object","properties":{"selection":{"$ref":"#/definitions/component_list"}}},"coloring_GET":{"type":"object","properties":{"coloring":{"type":"array","items":{"$ref":"#/definitions/coloring"}}}},"visibility_GET":{"type":"object","properties":{"visibility":{"$ref":"#/definitions/visibility"}}},"attachment_POST":{"type":"object","required":["type","data"],"properties":{"filename":{"type":"string"},"type":{"type":"string"},"data":{"type":"string"}}},"voice_message_POST":{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["mp3","ogg"]},"data":{"type":"string"}}},"media_POST":{"type":"object","required":["capture_date","type","data"],"properties":{"gps_coordinates":{"type":"string"},"capture_date":{"type":"string"},"type":{"type":"string"},"data":{"type":"string"}}},"file_GET":{"type":"object","properties":{"reference":{"type":"string"},"filename":{"type":"string"},"ifc_project":{"type":"string"}}},"file_PUT":{"type":"object","properties":{"reference":{"type":"string"},"filename":{"type":"string"},"ifc_project":{"type":"string"},"ifc_spatial_structure_element":{"type":"string"},"date":{"type":"string"}}},"document_reference_GET":{"type":"object","required":["guid"],"properties":{"guid":{"type":"string"},"document_guid":{"type":"string"},"url":{"type":"string"},"desctiption":{"type":"string"}}},"document_reference_POST":{"type":"array","items":{"type":"object","required":["guid"],"properties":{"guid":{"type":"string"},"document_guid":{"type":"string"},"url":{"type":"string"},"desctiption":{"type":"string"}}}},"meeting_GET":{"type":"object","required":["guid","title","date","creation_date","modified_date","meeting_type","meeting_type_id","organizers"],"properties":{"guid":{"type":"string"},"title":{"type":"string"},"date":{"type":"string"},"creation_date":{"type":"string"},"creation_author":{"type":"string"},"modified_date":{"type":"string"},"modified_author":{"type":"string"},"place":{"type":"string"},"meeting_type":{"type":"string"},"meeting_type_id":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"labels_id":{"type":"array","items":{"type":"string"}},"organizers":{"type":"array","items":{"type":"string"}},"participants":{"type":"array","items":{"type":"string"}},"canceled_participants":{"type":"array","items":{"type":"string"}},"additional_recipients":{"type":"array","items":{"type":"string"}}}},"milestone_GET":{"type":"object","required":["guid","title","date","creation_date","modified_date"],"properties":{"guid":{"type":"string"},"title":{"type":"string"},"date":{"type":"string"},"creation_date":{"type":"string"},"creation_author":{"type":"string"},"modified_date":{"type":"string"},"modified_author":{"type":"string"},"parent_milestone_id":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"labels_id":{"type":"array","items":{"type":"string"}},"connected_topics_id":{"type":"array","items":{"type":"string"}}}},"document_GET":{"type":"object","required":["guid","filename"],"properties":{"guid":{"type":"string"},"filename":{"type":"string"},"file_type":{"type":"string"},"folder_url":{"type":"string"},"version_number":{"type":"string"},"version_index":{"type":"integer"},"creation_date":{"type":"string"},"creation_author":{"type":"string"},"modified_date":{"type":"string"},"modified_author":{"type":"string"},"size_in_bytes":{"type":"integer"},"status":{"type":"string","enum":["Draft","Released","Approved","Review","Invalid","No Status"]},"labels_group_1":{"type":"array","items":{"type":"string"}},"labels_group_1_id":{"type":"array","items":{"type":"string"}},"labels_group_2":{"type":"array","items":{"type":"string"}},"labels_group_2_id":{"type":"array","items":{"type":"string"}},"labels_group_3":{"type":"array","items":{"type":"string"}},"labels_group_3_id":{"type":"array","items":{"type":"string"}},"labels_group_4":{"type":"array","items":{"type":"string"}},"labels_group_4_id":{"type":"array","items":{"type":"string"}},"labels_group_5":{"type":"array","items":{"type":"string"}},"labels_group_5_id":{"type":"array","items":{"type":"string"}},"labels_group_6":{"type":"array","items":{"type":"string"}},"labels_group_6_id":{"type":"array","items":{"type":"string"}},"labels_group_7":{"type":"array","items":{"type":"string"}},"labels_group_7_id":{"type":"array","items":{"type":"string"}},"labels_group_8":{"type":"array","items":{"type":"string"}},"labels_group_8_id":{"type":"array","items":{"type":"string"}},"description_1":{"type":"string"},"description_2":{"type":"string"},"email_details":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"delivery_date":{"type":"string"},"attachments":{"type":"boolean"},"encrypted":{"type":"boolean"}}},"media_details":{"type":"object","properties":{"gps":{"type":"string"},"capture_date":{"type":"string"}}},"authorization":{"type":"object","properties":{"document_actions":{"$ref":"#/definitions/document_actions"}}}}},"document_version_GET":{"type":"object","properties":{"version_number":{"type":"string"},"version_index":{"type":"integer"},"modified_date":{"type":"string"},"modified_author":{"type":"string"},"size_in_bytes":{"type":"integer"}}},"user_GET":{"type":"object","required":["guid","email","name","role"],"properties":{"guid":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"function":{"type":"string"},"phone":{"type":"string"},"mobile_phone":{"type":"string"},"address":{"type":"object","properties":{"street":{"type":"string"},"zip":{"type":"string"},"company":{"type":"string"},"contact_groups":{"type":"string"}}},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"role":{"type":"string","enum":["Admin","Coordinator","User","Contact"]}}},"project_actions":{"type":"array","items":{"type":"string","enum":["createTopic","createDocument"]}},"topic_actions":{"type":"array","items":{"type":"string","enum":["update","updateFiles","createComment","createViewpoint","createDocumentReferences","createAttachment","createVoiceMessage","createMedia","createCheckpoints"]}},"document_actions":{"type":"array","items":{"type":"string","enum":["updateMetadata","updateContent","move"]}},"comment_actions":{"type":"array","items":{"type":"string","enum":["delete"]}},"viewpoint_actions":{"type":"array","items":{"type":"string"}},"checkpoint":{"type":"object","required":["guid","title","checkpoint_status"],"properties":{"guid":{"type":"string"},"title":{"type":"string"},"checkpoint_status":{"type":"string","enum":["Open","Done"]}}},"orthogonal_camera":{"type":"object","properties":{"camera_view_point":{"$ref":"#/definitions/point"},"camera_direction":{"$ref":"#/definitions/direction"},"camera_up_vector":{"$ref":"#/definitions/direction"},"view_to_world_scale":{"type":"number"},"aspect_ratio":{"type":"number"}}},"perspective_camera":{"type":"object","properties":{"camera_view_point":{"$ref":"#/definitions/point"},"camera_direction":{"$ref":"#/definitions/direction"},"camera_up_vector":{"$ref":"#/definitions/direction"},"field_of_view":{"type":"number"},"aspect_ratio":{"type":"number"}}},"line":{"type":"object","properties":{"start_point":{"$ref":"#/definitions/point"},"end_point":{"$ref":"#/definitions/point"}}},"clipping_plane":{"type":"object","properties":{"location":{"$ref":"#/definitions/location"},"direction":{"$ref":"#/definitions/direction"}}},"snapshot":{"type":"object","properties":{"snapshot_type":{"type":"string","enum":["jpg","png"]}}},"files":{"type":"array","items":{"$ref":"#/definitions/file"}},"components":{"type":"object","properties":{"selection":{"$ref":"#/definitions/component_list"},"coloring":{"type":"array","items":{"$ref":"#/definitions/coloring"}},"visibility":{"$ref":"#/definitions/visibility"}}},"component_list":{"type":"array","items":{"$ref":"#/definitions/component"}},"coloring":{"type":"object","properties":{"color":{"type":"string"},"components":{"$ref":"#/definitions/component_list"}}},"visibility":{"type":"object","properties":{"default_visibility":{"type":"boolean","default":false},"exceptions":{"$ref":"#/definitions/component_list"},"view_setup_hints":{"$ref":"#/definitions/view_setup_hints"}}},"point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}}},"direction":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}}},"location":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}}},"file":{"type":"object","properties":{"reference":{"type":"string"},"filename":{"type":"string"},"ifc_project":{"type":"string"}}},"component":{"type":"object","properties":{"ifc_guid":{"type":"string"},"originating_system":{"type":"string"},"authoring_tool_id":{"type":"string"}}},"view_setup_hints":{"type":"object","properties":{"spaces_visible":{"type":"boolean","default":false},"space_boundaries_visible":{"type":"boolean","default":false},"openings_visible":{"type":"boolean","default":false}}}},"parameters":{},"responses":{"TooManyRequests":{"description":"Too Many Requests","headers":{"Retry-After":{"description":"Seconds to wait before retrying the request.","type":"integer"}}}},"security":[{"oauth2-auth":["openid offline_access bcf"]}],"tags":[{"name":"Subscriptions"},{"name":"Foundation"},{"name":"Projects"},{"name":"Topics"},{"name":"Topic Checkpoints"},{"name":"Topic Comments"},{"name":"Topic Viewpoints"},{"name":"Topic Attachment"},{"name":"Topic Voice Message"},{"name":"Topic Media"},{"name":"Topic Files"},{"name":"Topic Document References"},{"name":"Meetings"},{"name":"Milestones"},{"name":"Documents"},{"name":"Users"}],"securityDefinitions":{"oauth2-auth":{"type":"oauth2","flow":"accessCode","authorizationUrl":"https://api.buildagil.com/bcf/oauth2/authorize","tokenUrl":"https://api.buildagil.com/bcf/oauth2/token","scopes":{"openid offline_access bcf":"openid offline_access bcf"}}}}