openapi: 3.0.3 info: title: Aurora Solar Agreements API description: 'The Aurora API lets you build apps and integrations on the Aurora Solar platform for solar sales and design. It is a tenant-scoped REST API: every resource lives under /tenants/{tenant_id}. Requests are authenticated with an API-key bearer token (Standard keys prefixed `sk_`, Restricted keys prefixed `rk_`; `sand_`/`prod_` denote the environment) passed as `Authorization: Bearer `. The current API version is v2024.05, selected via the `Aurora-Version` request header. Scope note: A handful of paths in this document are confirmed directly against Aurora''s public reference (List Projects, Create Design Request, Create Webhook). The remaining paths are HONESTLY MODELED from Aurora''s published operation catalog (docs.aurorasolar.com/llms.txt) following the same `/tenants/{tenant_id}/` convention; exact path segments for modeled operations should be reconciled against the live reference, which is partially gated. Modeled operations carry `x-modeled: true`.' version: v2024.05 contact: name: Aurora Solar Developer Platform url: https://docs.aurorasolar.com license: name: Proprietary url: https://aurorasolar.com/terms-of-service/ servers: - url: https://api.aurorasolar.com description: Production - url: https://api-sandbox.aurorasolar.com description: Sandbox security: - bearerAuth: [] tags: - name: Agreements description: Customer agreements and signed downloads. paths: /tenants/{tenant_id}/agreements: parameters: - $ref: '#/components/parameters/TenantId' get: operationId: listAgreements tags: - Agreements summary: List agreements description: Lists customer agreements for the tenant. x-modeled: true responses: '200': description: A list of agreements. content: application/json: schema: type: object properties: agreements: type: array items: $ref: '#/components/schemas/Agreement' '401': $ref: '#/components/responses/Unauthorized' /tenants/{tenant_id}/agreements/{agreement_id}: parameters: - $ref: '#/components/parameters/TenantId' - name: agreement_id in: path required: true schema: type: string get: operationId: retrieveAgreement tags: - Agreements summary: Retrieve an agreement description: Retrieves a customer agreement by ID. x-modeled: true responses: '200': description: The requested agreement. content: application/json: schema: $ref: '#/components/schemas/Agreement' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /tenants/{tenant_id}/agreements/{agreement_id}/link: parameters: - $ref: '#/components/parameters/TenantId' - name: agreement_id in: path required: true schema: type: string get: operationId: retrieveAgreementLink tags: - Agreements summary: Retrieve agreement link description: Retrieves a hosted link where the customer can view/sign the agreement. x-modeled: true responses: '200': description: The agreement link. content: application/json: schema: type: object properties: url: type: string format: uri '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Error: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string Agreement: type: object properties: id: type: string format: uuid project_id: type: string status: type: string enum: - draft - sent - signed - declined signed_at: type: string format: date-time responses: Unauthorized: description: Missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: TenantId: name: tenant_id in: path required: true description: The tenant (organization) ID that owns the resource. schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: 'API-key bearer token. Standard keys are prefixed `sk_`, Restricted keys `rk_`; `sand_`/`prod_` denote sandbox vs production. Passed as `Authorization: Bearer `.'