Skip to main content

OpenCollective API helper (OpsDev.nz), staging-first with 1Password token resolution

Project description

oc_opsdevnz

Staging-first OpenCollective client and CLI for OpsDev.nz. Resolves tokens from 1Password via op-opsdevnz and defaults to the staging API unless you explicitly opt into prod.

Features

  • httpx GraphQL client with retries/backoff and redacted error messages.
  • Environment guardrails: staging by default, for_prod()/--prod required for production.
  • Token resolution via OC_SECRET_REF/OC_TOKEN using op-opsdevnz.
  • CLI helpers for whoami, host organization upserts, collective creation/apply-to-host flows, and project creation from YAML/JSON.

Install

pip install oc-opsdevnz op-opsdevnz
# or editable while hacking in this repo
pip install -e modules/oc_opsdevnz[dev]

CLI (staging by default)

export OC_SECRET_REF="op://startmeup.nz/api-staging.opencollective.com/credential"  # or set OC_TOKEN

# Fetch an account/collective by slug
oc-opsdevnz whoami opsdevnz

# Create/update host orgs from YAML
oc-opsdevnz hosts --file hosts.yaml

# Create/update collectives and optionally apply to a host
oc-opsdevnz collectives --file collectives.yaml

# Create/update projects under a parent collective
oc-opsdevnz projects --file projects.yaml

Use --prod to target production (only when you mean it), or --api-url to override explicitly.

Example YAML shapes

hosts.yaml (real staging values):

- name: StartMeUp.NZ
  slug: startmeup-nz
  description: Fiscal sponsor for OpsDev.NZ and NZ startups (staging)
  website: https://startmeup.nz
  currency: nzd
  tags: [fiscal-host, newzealand, aotearoa]

collectives.yaml (real staging values):

- name: OpsDev.NZ
  slug: opsdev-nz
  description: OpsDev.NZ community and projects.
  tags: [opsdev, operations, engineering, nz]
  host_slug: startmeup-nz
  apply_to_host: true
  host_apply_message: Please host OpsDev.NZ on staging.

projects.yaml:

- name: GetJJobs.NZ
  slug: getjjobs-nz
  parent_slug: opsdev-nz
  description: Pilot job-matching project under OpsDev.NZ.
  tags: [jobs, pilot]

Python API

from oc_opsdevnz import OpenCollectiveClient

client = OpenCollectiveClient.for_staging()
data = client.graphql("query { account(slug:\"opsdevnz\") { id slug name } }")

prod_client = OpenCollectiveClient.for_prod()  # explicit opt-in

Helpers for YAML-driven workflows:

from oc_opsdevnz import load_items, upsert_collective, upsert_host, upsert_project
from pathlib import Path

client = OpenCollectiveClient.for_staging()
for host in load_items(Path("hosts.yaml")):
    upsert_host(client, host)
for project in load_items(Path("projects.yaml")):
    upsert_project(client, project)

Development

cd modules/oc_opsdevnz
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
pytest

License

Apache-2.0 © OpsDev.nz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oc_opsdevnz-0.1.1.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oc_opsdevnz-0.1.1-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file oc_opsdevnz-0.1.1.tar.gz.

File metadata

  • Download URL: oc_opsdevnz-0.1.1.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for oc_opsdevnz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 10297effb1fadc2a277803664277d5fadd4f5e421531f5474f1b2707830111cb
MD5 acfac1209215b8647ec9b0c8dbc6609e
BLAKE2b-256 0d48d0d670d2d9be8d2cd78dadd1bd2bd0fe36e7665d70a062b88f7985f83b43

See more details on using hashes here.

File details

Details for the file oc_opsdevnz-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: oc_opsdevnz-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for oc_opsdevnz-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 93c3bc130a61caaddb5fa8cf2277ad973e3541aff02a9337b2d1844d4193f0ce
MD5 402907e3ba487d5c81d5a7e50e1b8f2e
BLAKE2b-256 4a354e09fbd744c4839b7068ac091366b3d3b068776d42a58c377dcc4e6f2b47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page