Projects
Query Projects
Section titled “Query Projects”Returns a list of projects in your organization. Projects are returned in sorted order, with the most recently created project appearing first. Archived projects are included, with archived: true.
GET https://api.arcsite.com/v1/projects
curl "https://api.arcsite.com/v1/projects" \ -H "Authorization: Bearer your_api_token_here"const response = await fetch("https://api.arcsite.com/v1/projects", { headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.get( "https://api.arcsite.com/v1/projects", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json()[ { "id": "36029621652695040", "name": "project 4", "created_at": "2022-01-16T04:19:23.000000Z", "updated_at": "2022-01-16T04:19:23.000000Z", "job_number": "144111",26 collapsed lines
"customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false }]Query Parameters
Section titled “Query Parameters”| Parameter | Default | In | Description |
|---|---|---|---|
| page | 1 | query | Request a specific page |
| per_page | 10 | query | Page size (maximum 100) |
| created_at_begin | None | query | (optional) Only return projects created at or after this time, in UTC ISO 8601 format (e.g., 2025-01-16T04:19:23) |
| created_at_end | None | query | (optional) Only return projects created at or before this time, in UTC ISO 8601 format (e.g., 2025-01-16T04:19:23) |
Create Project
Section titled “Create Project”Creates a new project.
POST https://api.arcsite.com/v1/projects
curl -X POST 'https://api.arcsite.com/v1/projects' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "name": "Backyard Fence", "owner": "owner@example.com", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"] }'const response = await fetch("https://api.arcsite.com/v1/projects", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ name: "Backyard Fence", owner: "owner@example.com", job_number: "144111", customer: { name: "Jack", phone: "1441", second_phone: "1122", email: "customer@example.com", second_email: "customer2@example.com", address: { street: "street", city: "city", county: "county", state: "state", zip_code: "300433", }, }, work_site_address: { street: "street", city: "city", county: "county", state: "state", zip_code: "300433", }, sales_rep: { name: "Wang", email: "sales@example.com", phone: "122122-121", }, tags: ["tag1", "tag2"], }),});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects", headers={"Authorization": "Bearer your_api_token_here"}, json={ "name": "Backyard Fence", "owner": "owner@example.com", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433", }, }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433", }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121", }, "tags": ["tag1", "tag2"], },)data = response.json(){ "id": "36029621653386360", "name": "Backyard Fence", "created_at": "2022-01-16T03:31:39.000000Z", "updated_at": "2022-01-16T03:31:39.000000Z", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false}Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| name | String | (required) Name of the project |
| owner | String | (required) Owner of the project |
| customer | Customer | (optional) Customer profile of the project |
| job_number | String | (optional) Job number of the project |
| work_site_address | Address | (optional) Worksite address of the project |
| sales_rep | SalesRep | String | (optional) Sales Representative of the project. Either a SalesRep object, or the email of an active user in your organization, in which case the sales rep’s name, email and phone are taken from that user’s profile. |
| tags | List[String] | (optional) Tags added to this project |
Project Integrations
Section titled “Project Integrations”ArcSite supports integration with various external platforms. Once project creation is complete, you can use the standard integration solutions we provide for different platforms to integrate your project. After integration is completed, your project will gain additional functionality to support data synchronization and interactions with third-party platforms. For specific details, see the integrations module.
Project Name Rules
Section titled “Project Name Rules”- Project name must be unique across the same organization.
- Project name cannot contain any of the following characters:
:/\. - Project name cannot start with
.. - Project name must be less than or equal to 200 characters.
Create Project adjusts a name that breaks rules 2–4 instead of rejecting it: : / \ become spaces, a leading . is removed, the name is cut to 200 characters, and surrounding whitespace is trimmed. Use the name in the response as the stored name. Update Project rejects such a name with 400.
If your organization already has a project with the same name, the request returns 400 Bad Request:
{ "message": "Project name Backyard Fence already exists, please use another name."}Other invalid requests, such as a missing required field, also return 400.
Customer
Section titled “Customer”| Parameter | Type | Description |
|---|---|---|
| name | String | (optional) Customer name |
| phone | String | (optional) Customer phone |
| second_phone | String | (optional) Customer secondary phone |
| String | (optional) Customer email. Must be a valid email address | |
| second_email | String | (optional) Customer secondary email. Must be a valid email address |
| address | Address | (optional) Customer address |
Address
Section titled “Address”| Parameter | Type | Description |
|---|---|---|
| street | String | (optional) Street name |
| city | String | (optional) City name |
| county | String | (optional) County name |
| state | String | (optional) State name |
| zip_code | String | (optional) Zip code |
SalesRep
Section titled “SalesRep”| Parameter | Type | Description |
|---|---|---|
| name | String | (optional) Sales rep name |
| String | (optional) Sales rep email. Must be a valid email address | |
| phone | String | (optional) Sales rep phone |
Update Project
Section titled “Update Project”Updates an existing project.
PATCH https://api.arcsite.com/v1/projects/<id>
curl -X PATCH 'https://api.arcsite.com/v1/projects/<ID>' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "operator": "admin@example.com", "name": "Backyard Fence", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"] }'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>", { method: "PATCH", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ operator: "admin@example.com", name: "Backyard Fence", job_number: "144111", customer: { name: "Jack", phone: "1441", second_phone: "1122", email: "customer@example.com", second_email: "customer2@example.com", address: { street: "street", city: "city", county: "county", state: "state", zip_code: "300433", }, }, work_site_address: { street: "street", city: "city", county: "county", state: "state", zip_code: "300433", }, sales_rep: { name: "Wang", email: "sales@example.com", phone: "122122-121", }, tags: ["tag1", "tag2"], }),});const data = await response.json();import requests
response = requests.patch( "https://api.arcsite.com/v1/projects/<ID>", headers={"Authorization": "Bearer your_api_token_here"}, json={ "operator": "admin@example.com", "name": "Backyard Fence", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433", }, }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433", }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121", }, "tags": ["tag1", "tag2"], },)data = response.json()Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| operator | String | (required) Who updates the project |
| name | String | (optional) New name of the project |
| customer | Customer | (optional) Customer profile of the project |
| job_number | String | (optional) Job number of the project |
| work_site_address | Address | (optional) Worksite address of the project |
| sales_rep | SalesRep | String | (optional) Sales Representative of the project. Same format as in Create Project. |
| tags | List[String] | (optional) Tags for this project |
The response is the updated project, in the same format as the Create Project response.
Get Project
Section titled “Get Project”Returns a project in your organization by project ID.
GET https://api.arcsite.com/v1/projects/<id>
curl "https://api.arcsite.com/v1/projects/<ID>" \ -H "Authorization: Bearer your_api_token_here"const response = await fetch("https://api.arcsite.com/v1/projects/<ID>", { headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.get( "https://api.arcsite.com/v1/projects/<ID>", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json(){ "id": "36029621652695040", "name": "project 4", "created_at": "2022-01-16T04:19:23.000000Z", "updated_at": "2022-01-16T04:19:23.000000Z", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false, "owner": "owner@example.com"}Search Projects
Section titled “Search Projects”Searches projects by conditions and returns the list of filtered projects in your organization. Projects are returned in sorted order, with the most recently created project appearing first.
POST https://api.arcsite.com/v1/projects/search
curl -X POST 'https://api.arcsite.com/v1/projects/search' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "project_name": "Updated project name", "tags": ["Tag 1"] }'const response = await fetch("https://api.arcsite.com/v1/projects/search", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ project_name: "Updated project name", tags: ["Tag 1"], }),});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/search", headers={"Authorization": "Bearer your_api_token_here"}, json={ "project_name": "Updated project name", "tags": ["Tag 1"], },)data = response.json()[ { "id": "36029621652695040", "name": "Updated project name", "created_at": "2022-01-16T04:19:23.000000Z", "updated_at": "2022-01-16T04:19:23.000000Z", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "customer@example.com", "second_email": "customer2@example.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "sales@example.com", "phone": "122122-121" }, "tags": ["Tag 1"], "archived": false }]Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| project_name | String | (optional) Return projects whose name contains this value (case-insensitive) |
| tags | List[String] | (optional) Return projects that have all of these tags (case-sensitive) |
| page | Integer | (optional) Page to return, starting at 1. Defaults to 1 |
| per_page | Integer | (optional) Page size. Defaults to 10, maximum 100 |
Get Project Collaborators
Section titled “Get Project Collaborators”Returns everyone who has access to the project — both users added directly and user groups the project is shared with. The owner never appears in this list; their email is available as owner in Get Project. Only active users are listed: users whose account is pending activation or deactivated are omitted.
GET https://api.arcsite.com/v1/projects/<id>/collaborators
curl "https://api.arcsite.com/v1/projects/<ID>/collaborators" \ -H "Authorization: Bearer your_api_token_here"const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/collaborators", { headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.get( "https://api.arcsite.com/v1/projects/<ID>/collaborators", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json(){ "collaborators": [ { "type": "user", "email": "admin@example.com", "role": "PROJECT_ADMIN" }, { "type": "user", "email": "dev@example.com", "role": "PROJECT_COLLABORATOR" }, { "type": "group", "group_id": "36029621652695041", "name": "Sales Team", "role": "PROJECT_VIEWER" } ]}Collaborator Entry
Section titled “Collaborator Entry”Each entry is either a user or a user group, distinguished by type:
| Field | Type | Description |
|---|---|---|
| type | String | user or group |
| String | (user only) Email of the collaborator | |
| group_id | String | (group only) Id of the user group, see Get User Group |
| name | String | (group only) Name of the user group |
| role | Role | Project role of the user, or of every member of the group. Same values as accepted by Add Project Collaborators. |
Add Project Collaborators
Section titled “Add Project Collaborators”Adds collaborators to a project. Successfully added collaborators are in the success_items field of the response, and failed items are in fail_items. This API is idempotent, so the same collaborator can be added multiple times. Adding an existing collaborator with a different role adds that role; it doesn’t replace the current one. To lower a collaborator’s role, remove them and add them again.
POST https://api.arcsite.com/v1/projects/<id>/add_collaborators
curl -X POST 'https://api.arcsite.com/v1/projects/<ID>/add_collaborators' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "collaborators": [ { "email": "dev@example.com", "role": "PROJECT_ADMIN" }, { "email": "unknown@example.com", "role": "PROJECT_ADMIN" } ] }'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/add_collaborators", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ collaborators: [ { email: "dev@example.com", role: "PROJECT_ADMIN" }, { email: "unknown@example.com", role: "PROJECT_ADMIN" }, ], }),});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/add_collaborators", headers={"Authorization": "Bearer your_api_token_here"}, json={ "collaborators": [ {"email": "dev@example.com", "role": "PROJECT_ADMIN"}, {"email": "unknown@example.com", "role": "PROJECT_ADMIN"}, ], },)data = response.json(){ "success_items": [ { "email": "dev@example.com", "role": "PROJECT_ADMIN" } ], "fail_items": [ { "data": { "email": "unknown@example.com", "role": "PROJECT_ADMIN" }, "message": "unknown@example.com has not been added to your company account yet." } ]}Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| collaborators | List[Collaborator] | (required) collaborators to add |
Collaborator
Section titled “Collaborator”| Parameter | Type | Description |
|---|---|---|
| String | (required) Email of the collaborator. Must be a valid email address; an invalid value fails the whole request with 400 | |
| role | Role | (required) Project role |
PROJECT_ADMIN— Project admins have full access to the project.PROJECT_COLLABORATOR— Can create, edit, and delete drawings. This role cannot delete the project or manage collaborators.PROJECT_VIEWER— Project viewers can only view drawings.
Remove Project Collaborators
Section titled “Remove Project Collaborators”Removes collaborators from a project.
POST https://api.arcsite.com/v1/projects/<id>/remove_collaborators
curl -X POST 'https://api.arcsite.com/v1/projects/<ID>/remove_collaborators' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "emails": [ "dev@example.com", "unknown@example.com" ] }'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/remove_collaborators", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ emails: ["dev@example.com", "unknown@example.com"], }),});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/remove_collaborators", headers={"Authorization": "Bearer your_api_token_here"}, json={ "emails": ["dev@example.com", "unknown@example.com"], },)data = response.json()Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| emails | List[String] | (required) emails to remove |
{}Emails that aren’t collaborators on the project are ignored. User groups shared with the project can’t be removed with this endpoint.
Get User Group
Section titled “Get User Group”Returns a user group of your organization with its members. Use the group_id from Get Project Collaborators to expand a shared group into individual users.
GET https://api.arcsite.com/v1/user_groups/<id>
curl "https://api.arcsite.com/v1/user_groups/<ID>" \ -H "Authorization: Bearer your_api_token_here"const response = await fetch("https://api.arcsite.com/v1/user_groups/<ID>", { headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.get( "https://api.arcsite.com/v1/user_groups/<ID>", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json(){ "id": "36029621652695041", "name": "Sales Team", "members": [ { "user_id": "36029621652695042", "name": "Bob Smith", "email": "bob@example.com" }, { "user_id": "36029621652695043", "name": "Jane Doe", "email": "jane@example.com" } ]}Member
Section titled “Member”| Field | Type | Description |
|---|---|---|
| user_id | String | Id of the user |
| name | String | Full name of the user |
| String | Email of the user |
Only active users are listed as members.
Get Project Drawings
Section titled “Get Project Drawings”Returns the drawings of a project, newest first.
GET https://api.arcsite.com/v1/projects/<id>/drawings
curl "https://api.arcsite.com/v1/projects/<ID>/drawings" \ -H "Authorization: Bearer your_api_token_here"const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/drawings", { headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.get( "https://api.arcsite.com/v1/projects/<ID>/drawings", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json()[ { "id": "36029621653385418", "name": "drawing 1" }, { "id": "36029621653385407", "name": "drawing 2" }]Query Parameters
Section titled “Query Parameters”| Parameter | Default | In | Description |
|---|---|---|---|
| page | 1 | query | Request a specific page |
| per_page | 10 | query | Page size (maximum 100) |
Import PDF
Section titled “Import PDF”Your uploaded PDF will be split into multiple pages; one ArcSite drawing is created for each page.
POST https://api.arcsite.com/v1/projects/<id>/import_pdf
# upload a local filecurl --location 'https://api.arcsite.com/v1/projects/<ID>/import_pdf' \ -H "Authorization: Bearer your_api_token_here" \ --form 'file=@"/<file_path>/<file_name.pdf>"'
# or pass the file url directlycurl --location 'https://api.arcsite.com/v1/projects/<ID>/import_pdf' \ -H "Authorization: Bearer your_api_token_here" \ --form 'file_url="https://example.com/plan.pdf"'// upload a local fileconst form = new FormData();form.append("file", fileInput.files[0]);
// or pass a file URL directly:// form.append("file_url", "https://example.com/plan.pdf");
const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/import_pdf", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", }, body: form,});const data = await response.json();import requests
# upload a local filewith open("/path/to/file.pdf", "rb") as f: response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/import_pdf", headers={"Authorization": "Bearer your_api_token_here"}, files={"file": f}, )
# or pass a file URL directly (still sent as multipart/form-data):# response = requests.post(# "https://api.arcsite.com/v1/projects/<ID>/import_pdf",# headers={"Authorization": "Bearer your_api_token_here"},# files={"file_url": (None, "https://example.com/plan.pdf")},# )data = response.json(){ "drawings": [ { "id": "36029621653385418" }, { "id": "36029621653385407" } ]}Request Payload
Section titled “Request Payload”| Parameter | In | Description |
|---|---|---|
| file | Body | The binary PDF file to be uploaded |
| file_url | Body | The URL of a publicly accessible PDF file |
file_url must be an https URL on the public internet that returns the PDF directly: redirects and credentials in the URL aren’t allowed, the file can be at most 100 MB, and the server must respond within 20 seconds.
The request is processed synchronously, so it can take a while for large PDFs. A page that fails to process is skipped, so drawings can have fewer entries than the PDF has pages.
Errors: 400 when file and file_url are both missing or both present, when the URL can’t be downloaded, or when the file isn’t a valid PDF (including corrupted and password-protected files). 403 when your organization has reached its limit of drawings created from PDF files.
Archive Project
Section titled “Archive Project”Archives a project by project ID. The archived project will be hidden from the project list in the ArcSite apps. Query Projects and Search Projects still return it, with archived: true. You can use Unarchive Project to unarchive it.
POST https://api.arcsite.com/v1/projects/<ID>/archive
curl -X POST 'https://api.arcsite.com/v1/projects/<ID>/archive' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/archive", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/archive", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json(){}Unarchive Project
Section titled “Unarchive Project”Unarchives a project by project ID.
POST https://api.arcsite.com/v1/projects/<ID>/unarchive
curl -X POST 'https://api.arcsite.com/v1/projects/<ID>/unarchive' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/unarchive", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", },});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/unarchive", headers={"Authorization": "Bearer your_api_token_here"},)data = response.json(){}Transfer Project Owner
Section titled “Transfer Project Owner”Transfers ownership of a project to another user. The new owner must belong to the same organization.
POST https://api.arcsite.com/v1/projects/<ID>/transfer_owner
curl -X POST 'https://api.arcsite.com/v1/projects/<ID>/transfer_owner' \ -H 'Authorization: Bearer your_api_token_here' \ -H 'Content-Type: application/json' \ -d '{ "owner": "newowner@example.com" }'const response = await fetch("https://api.arcsite.com/v1/projects/<ID>/transfer_owner", { method: "POST", headers: { Authorization: "Bearer your_api_token_here", "Content-Type": "application/json", }, body: JSON.stringify({ owner: "newowner@example.com", }),});const data = await response.json();import requests
response = requests.post( "https://api.arcsite.com/v1/projects/<ID>/transfer_owner", headers={"Authorization": "Bearer your_api_token_here"}, json={ "owner": "newowner@example.com", },)data = response.json(){}Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
| owner | String | (required) Email or full name (first name + last name) of new owner |
Errors: 404 if no active user in your organization matches owner, and 400 if the user already owns the project or the project can’t be transferred.