Running a project
A project administrator decides who reaches a project and for how long. Access that should stop on a known day, such as a contractor’s or a partner’s, gets an end date; nobody has to remember to remove it. This page shows where each step is in Workspace and how an application reads the same facts in Python.
Give access until a date
Section titled “Give access until a date”Open the project, then Effective access. Each person’s row has an Access ends cell: No end date,
Ends 31 December 2026 or Ended 31 December 2026. Choose Set end date for the person, pick the last day they
may use the project and save.
- The end date is the last permitted day, read as a UTC date. Access ends at the start of the next day, UTC, for everyone wherever they are.
- The date applies to the person’s direct grant. A team grant has no end date: someone who also reaches the project through a team keeps that team’s access after the direct grant ends.
- A project always keeps at least one administrator without an end date, so it can never lock itself out.
- Their project access keys, agents and saved connections (QGIS, notebooks) stop working at the same moment and start working again when the date is extended. Nothing is revoked, so nobody has to create new keys.
When the date passes
Section titled “When the date passes”Before the date, the person’s project list and the project overview say “Your access to this project ends on 31 December 2026 (end of day, UTC).” After it, opening the project in Workspace, and every request an application makes with one of their credentials, answers
Your access to this project ended after 31 December 2026. Ask a project administrator to extend it.
A person who never had access keeps the ordinary refusal; the sentence only appears for someone whose own grant ended.
Extend or remove an end date
Section titled “Extend or remove an end date”Choose Change end date for the person and pick a later day, or Remove end date. The next request they make succeeds again; they do not need new keys or a new invitation.
Rename a project
Section titled “Rename a project”Choose Rename project… on the project page. The project’s id never changes, so every address that names the project, including the OGC API - Features address a GIS application saved, keeps working byte for byte. The project’s history lists every earlier name, who changed it and when.
Read it from Python
Section titled “Read it from Python”client is an ophiolite.Client for your project (see Build on Ophiolite for a key and
the SDK). Every project you reach is listed with access_ends_at, the instant your access ends, or None when it
does not end:
from datetime import timedelta, datetimefrom ophiolite.account import connect
account = connect(client.url, client.credential, client.http)mine = {row['id']: row for row in account.projects()}here = mine[client.project]if here['access_ends_at'] is None: print(here['name'], 'has no end date for you')else: last = datetime.fromisoformat(here['access_ends_at'].replace('Z', '+00:00')) - timedelta(microseconds=1) print(here['name'], 'is yours until the end of', last.date(), '(UTC)')A project administrator reads everyone’s access with access/effective: one row per person, whether they have
access now, the last day of their direct grant (ends_on, a date) and each grant with where it comes from. Anyone
else gets a refusal.
answer = client.http.post(f'{client.url}/api/v1/projects/{client.project}/access/effective', json={'project_id': client.project}, headers=client.credential.headers(client.url, client.project))people = {person['user_id']: person for person in answer.json()['members']} if answer.status_code == 200 else {}for person in people.values(): until = person['ends_on'] or 'no end date' print(person['name'], 'has access' if person['has_access'] else 'has no access', '-', until)Setting, changing and removing an end date, and renaming, are done in Workspace (a signed-in browser session); keys and agents can read these facts but cannot change them. The notebook Who has access, and until when does the same reading with a chart.
