MiroxMirox
  • Plataforma

    • Filosofia
    • Visão geral da plataforma
    • Recursos da plataforma
    • Disponibilidade e janelas de manutenção
    • Lançamentos e versões
  • Mirox-Cloud

    • Visão geral da cloud
    • Microsserviços ligados
  • Mirox-Agent

    • Visão geral do agente
    • Opções de implementação
    • Data Scraper
    • Gémeo digital
  • Detalhes técnicos

    • Recolha de métricas
  • Informações

    • Centrais suportadas
  • Tipos de central

    • Centrais solares
    • Seguidores solares e controladores do parque
    • Parques eólicos
    • Armazenamento por baterias
    • Sistema de alarme
  • Monitorização e visualização

    • Monitorização em tempo real
    • Gémeo digital
    • Estados dos componentes
    • Códigos de estado do inversor
    • Eventos do inversor
    • Deteção de perdas
    • Limites de potência e corte
    • Deteção de eficiência
    • Painel de KPI
  • Gestão de dados

    • Eventos
    • Níveis de alarme
    • Tickets
    • Previsões
    • Relatórios
    • Métricas
  • Alert Manager

    • Visão geral
    • Regras de alerta
    • Alertas e notificações
    • Exemplos
  • Integração e partilha

    • Cooperações
    • Tokens de API
    • VPN
    • Conflitos de endereços VPN
    • Proxy
  • IA

    • Assistente de IA e assistentes
    • Acesso agêntico (MCP)
  • Faturação

    • Mercado e tarifas
    • Como a Receita É Calculada
    • Contabilidade e faturação
    • Contratos
  • Colaboração

    • Convites
  • Segurança

    • Autenticação
    • Bloqueio de conta
    • Política de segurança da organização
    • Sistema de permissões
    • Segmentação de rede
    • Restrições de cooperação
    • Registo de auditoria de acesso
    • Atividade e auditoria
    • Isolamento de Dados
  • Primeiros passos

    • Onboarding
    • Configuração inicial
  • Pessoal

    • Utilizar a VPN
    • Utilizar o proxy
    • Autenticação de dois fatores
    • Sessões
    • Tokens de API
    • Notificações
    • Ligar o Microsoft Teams
  • Por central

    • Contactos
    • Dispositivos de rede
    • Registadores de dados
    • Leitor Modbus genérico
    • Componentes
    • VPN direta (por agente)
    • Volume de dados
    • Importar histórico
  • Organização

    • Permissões de membros
    • Política de segurança
    • Cooperações
    • Armazenamento de ficheiros
    • Serviços VPN
    • Trabalhar com Relatórios
  • Exportação de dados

    • Exportação de métricas
    • API de exportação de métricas
    • Migrar para a exportação de métricas
    • API de exportação legada
    • Geração externa de relatórios
    • Grafana
    • Dashboards Grafana
    • Visão geral da API
    • Fórmulas MiroxQL (API)
  • Suporte

    • Solicitar uma integração
  • Relatórios

    • Gerador de relatórios externo
    • Exportação de métricas para Excel
  • Acesso Remoto
  • Segurança da conta
  • IA na Mirox
  • Importação do histórico
  • Relatórios
  • Exportação de dados
  • English
  • Deutsch
  • Español
  • Français
  • Português
  • Italiano
  • English
  • Plataforma

    • Filosofia
    • Visão geral da plataforma
    • Recursos da plataforma
    • Disponibilidade e janelas de manutenção
    • Lançamentos e versões
  • Mirox-Cloud

    • Visão geral da cloud
    • Microsserviços ligados
  • Mirox-Agent

    • Visão geral do agente
    • Opções de implementação
    • Data Scraper
    • Gémeo digital
  • Detalhes técnicos

    • Recolha de métricas
  • Informações

    • Centrais suportadas
  • Tipos de central

    • Centrais solares
    • Seguidores solares e controladores do parque
    • Parques eólicos
    • Armazenamento por baterias
    • Sistema de alarme
  • Monitorização e visualização

    • Monitorização em tempo real
    • Gémeo digital
    • Estados dos componentes
    • Códigos de estado do inversor
    • Eventos do inversor
    • Deteção de perdas
    • Limites de potência e corte
    • Deteção de eficiência
    • Painel de KPI
  • Gestão de dados

    • Eventos
    • Níveis de alarme
    • Tickets
    • Previsões
    • Relatórios
    • Métricas
  • Alert Manager

    • Visão geral
    • Regras de alerta
    • Alertas e notificações
    • Exemplos
  • Integração e partilha

    • Cooperações
    • Tokens de API
    • VPN
    • Conflitos de endereços VPN
    • Proxy
  • IA

    • Assistente de IA e assistentes
    • Acesso agêntico (MCP)
  • Faturação

    • Mercado e tarifas
    • Como a Receita É Calculada
    • Contabilidade e faturação
    • Contratos
  • Colaboração

    • Convites
  • Segurança

    • Autenticação
    • Bloqueio de conta
    • Política de segurança da organização
    • Sistema de permissões
    • Segmentação de rede
    • Restrições de cooperação
    • Registo de auditoria de acesso
    • Atividade e auditoria
    • Isolamento de Dados
  • Primeiros passos

    • Onboarding
    • Configuração inicial
  • Pessoal

    • Utilizar a VPN
    • Utilizar o proxy
    • Autenticação de dois fatores
    • Sessões
    • Tokens de API
    • Notificações
    • Ligar o Microsoft Teams
  • Por central

    • Contactos
    • Dispositivos de rede
    • Registadores de dados
    • Leitor Modbus genérico
    • Componentes
    • VPN direta (por agente)
    • Volume de dados
    • Importar histórico
  • Organização

    • Permissões de membros
    • Política de segurança
    • Cooperações
    • Armazenamento de ficheiros
    • Serviços VPN
    • Trabalhar com Relatórios
  • Exportação de dados

    • Exportação de métricas
    • API de exportação de métricas
    • Migrar para a exportação de métricas
    • API de exportação legada
    • Geração externa de relatórios
    • Grafana
    • Dashboards Grafana
    • Visão geral da API
    • Fórmulas MiroxQL (API)
  • Suporte

    • Solicitar uma integração
  • Relatórios

    • Gerador de relatórios externo
    • Exportação de métricas para Excel
  • Acesso Remoto
  • Segurança da conta
  • IA na Mirox
  • Importação do histórico
  • Relatórios
  • Exportação de dados
  • English
  • Deutsch
  • Español
  • Français
  • Português
  • Italiano
  • English
  • Primeiros passos

    • Onboarding
    • Configuração inicial
  • Pessoal

    • Utilizar a VPN
    • Utilizar o Proxy
    • Configurar a Autenticação de Dois Fatores
    • Gerir as Suas Sessões
    • Tokens de API
    • Notificações
    • Ligar o Microsoft Teams
  • Por central

    • Gerir Contactos da Central
    • Gerir dispositivos de rede
    • Configurar Registadores de Dados
    • Leitor Modbus Genérico
    • Configurar os componentes
    • Configurar servidores VPN por agente (VPN direta)
    • Volume de dados por central
    • Importar o histórico de uma central
  • Organização

    • Gerir Permissões de Membros
    • Definir a Política de Segurança da Sua Organização
    • Criar Cooperações
    • Utilizar o Armazenamento de Ficheiros
    • Serviços VPN da Organização
    • Trabalhar com Relatórios
  • Exportação de dados

    • Exportação de métricas
    • API de exportação de métricas
    • Migrar para a exportação de métricas
    • API de exportação legada
    • Geração externa de relatórios
    • Utilizar o Grafana como Plataforma Externa de Leitura
    • Criar os seus próprios dashboards Grafana
    • Visão Geral da API
    • Fórmulas MiroxQL (referência da API)
  • Suporte

    • Solicitar uma integração

API de exportação de métricas

A API de exportação de métricas fornece qualquer métrica das suas centrais como série temporal, em CSV ou JSON, com um único pedido GET. Lê a mesma coleção de métricas que os relatórios, incluindo as métricas que a sua organização definiu.

Cada ligação que a página Exportação de dados mostra é uma chamada desta API, pelo que a forma mais fácil de chegar a um pedido que funciona é construí-lo aí e copiá-lo.

Abrir no Mirox

Exportação de dados ▸ Métricas para uma seleção livre, Exportação de dados ▸ Construtor de API para um modelo. Ambos mostram a ligação daquilo que selecionou.

As ligações de exportação da exportação anterior continuam a funcionar sem alterações. Estão descritas na API de exportação legada; como passar de uma para a outra está no guia de migração.

Rotas

Todos os caminhos são relativos a https://service.mirox.io/api.

RotaRespostaFinalidade
GET /v1/export/seriesCSV, ou JSON com format=jsonExportar métricas como série temporal
GET /v1/export/series/estimateJSONTamanho e duração de uma exportação, sem ler dados
GET /v1/export/series/catalogJSON, ou um glossário CSV com format=csvAs métricas que pode exportar
GET /v1/export/series/lanesJSONOs componentes de uma central
GET /v1/export/series/template/{template_uid}CSV, ou JSON com format=jsonExportar um modelo
POST /v1/export/template/{template_uid}/convertJSONConverter um modelo legado

Autenticação

Envie um token de API do grupo Metric Export no cabeçalho Authorization:

Authorization: Bearer YOUR_API_TOKEN

O token lê todas as rotas de exportação desta página e as rotas legadas. Não pode criar, alterar nem eliminar nada. Num navegador em que tenha sessão iniciada no Mirox, as ligações funcionam sem token.

Só recebe dados das centrais cujas medições pode ler. As métricas da sua organização são exportadas por todas as funções de organização, exceto Externo. Consulte Quem pode exportar o quê.

As métricas são selecionadas por ID; uma consulta é limitada à central

Uma exportação indica as métricas pelo seu ID. O Mirox resolve cada ID para a sua própria consulta, limitada à central. As métricas da sua organização são entradas validadas da coleção, limitadas à central da mesma forma. O único texto de consulta que quem faz o pedido pode enviar é uma expressão MetricsQL em expr: corre apenas nas centrais do pedido, com a central acrescentada a cada seletor, e é recusada quando ela própria nomeia uma central, um parque ou uma organização.

Exportar uma série temporal

GET /v1/export/series

Injeção na rede de uma central ao longo do mês anterior, por dia:

curl --compressed "https://service.mirox.io/api/v1/export/series?park=ABC123DEF456&metrics=plant.grid_feedin&window=previous_month&step=day" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o feedin.csv
Date;Grid feed-in (kWh)
2026-08-01;5321,4
2026-08-02;4980,2
...

Parâmetros

ParâmetroValoresPredefiniçãoSignificado
metrics1 a 20 IDs de métricas, separados por vírgulasobrigatório, salvo se expr for indicadoAs colunas, por esta ordem. Consulte Métricas e valores.
expruma expressão MetricsQL, repetível até 5 vezes—Consultas em bruto da base de dados de séries temporais, um conjunto de colunas cada, depois das métricas. Consulte Consultas MetricsQL em bruto.
parkUIDs de centrais, separados por vírgulas—As centrais. É obrigatório park ou portfolio.
portfolioUIDs de carteiras, separados por vírgulas—Todas as centrais destas carteiras, além de park. No máximo 50 centrais no total.
start, enddata ou data com hora—Um período livre. Consulte Período.
year, quarter, month, week, daynúmeros—Um período de calendário.
windowpredefiniçãoprevious_monthUm período com nome.
stepauto, 1min, 5min, 15min, 1h, day, week, month, quarter, yearautoA duração de uma linha. Consulte Passos.
mismatchrefuse, sparserefuseO que acontece a uma métrica que não serve o passo: recusar o pedido ou exportá-la no seu próprio passo. Consulte Métricas com passos diferentes.
valuesauto, delta, cumulative, nativeautoO modo de valores de todas as métricas.
tzlocal, utclocalO calendário das linhas. Consulte Grelha temporal.
multi_park_aggmerge, splitmergeVárias centrais combinadas, ou uma coluna por central. Consulte Várias centrais.
componentsaté 100 referências de componentes, separadas por vírgulastodosRestringe as métricas de componentes a estes componentes. Consulte Componentes.
lane_limit1 a 10050Componentes por métrica e página.
lane_page1 ou mais1A página de componentes.
formatcsv, jsoncsvO formato da resposta.
languageen, de, es, fr, it, ptenO idioma dos nomes das colunas.
separator_csv, ; tabulação |;O separador de colunas.
separator_decimal. ,,O separador decimal. Tem de ser diferente de separator_csv.
datetime_formatpadrão strftime, até 64 caracterespor passoO formato da coluna de tempo.
headername, idnameCabeçalhos das colunas como nomes ou como IDs. Consulte Resposta CSV.
emptyblank, zeroblankUm valor em falta como célula vazia ou como 0.
offset_columntrue, falsetrueA coluna Desvio UTC. Só aparece em passos mais curtos do que um dia na hora local da central.
precisiondisplay, fulldisplayValores arredondados às casas decimais da métrica, ou sem arredondamento.

lane_limit e lane_page fora dos seus limites são ajustados ao limite mais próximo. Um parâmetro que a rota não conhece é ignorado.

Métricas e valores

Um ID de métrica tem a forma <prefixo>.<nome>, por exemplo plant.grid_feedin, inverter.ac_power ou sensor.irradiance. Uma métrica da sua organização é organization.<id da métrica>. O catálogo lista-as todas.

Cada métrica tem uma grandeza, que decide os modos de valores que oferece:

valuesUma linha mostraAplica-se a
deltaa quantidade dentro do intervaloapenas energia
cumulativeo total acumulado desde o início do períodoenergia e outras grandezas contadas
nativeo valor tal como a métrica o fornecetodas as métricas
autodelta para energia, native para tudo o resto

Um sufixo define o modo de uma métrica e prevalece sobre values:

metrics=plant.grid_feedin:cumulative,plant.grid_power

Um modo que não se aplica a uma métrica nunca é um erro. A métrica é exportada como native, e a nota value_mode_ignored indica-o. delta nunca é aplicado a uma potência.

A mesma métrica em dois modos dá duas colunas. A mesma métrica duas vezes no mesmo modo dá uma.

Energia por intervalo abaixo de 15 minutos

Um contador conta a energia em degraus inteiros. A 1min ou 5min, uma energia no modo delta salta, por isso, entre zero e um degrau. A exportação fornece-a e acrescenta a nota energy_delta_fine_step, que indica a métrica de potência correspondente quando a coleção tem uma. Para uma curva, use a métrica de potência; para energia, use 15min ou mais.

Período

Indique o período de uma de três formas. Duas formas num mesmo pedido respondem 400 window_conflict.

FormaParâmetrosExemplo
Período livrestart, endstart=2026-07-01&end=2026-07-31
Calendárioyear com quarter, month, week ou dayyear=2026&quarter=2
Predefiniçãowindowwindow=previous_week

Período livre. start e end são uma data (2026-07-01) ou uma data com hora (2026-07-01T06:00, 2026-07-01T06:00:00Z, 2026-07-01T06:00:00+02:00). Um valor sem fuso horário é lido no fuso horário das linhas. Um end que é uma data inclui esse dia; um end com hora é o momento em que o período termina. Sem end, o período termina agora. end sozinho, sem start, é recusado.

Calendário. year de 2020 a 2100, quarter de 1 a 4, month de 1 a 12, week de 1 a 53 (semana ISO), day de 1 a 31. day requer month. Sem year, entende-se o ano em curso. day prevalece sobre week, week sobre month, month sobre quarter.

Predefinições. today, yesterday, last_7_days, last_30_days, this_week, previous_week, this_month, previous_month, this_quarter, previous_quarter, this_year, previous_year. As predefinições this_ vão até agora; last_7_days e last_30_days são móveis até agora com passos inferiores a um dia (a mesma hora 7 ou 30 dias antes); a partir de day são os últimos 7 ou 30 dias locais, incluindo hoje. A partir de day, cada janela é alargada a dias inteiros (semanas, meses …) no fuso horário da central, e a resposta devolve a janela efetiva.

Um período começa, no mínimo, em 2020 e abrange no máximo 1827 dias (cinco anos). Um período que entra no futuro termina agora, com a nota end_clamped.

Passos

step=auto escolhe um passo que todas as métricas pedidas servem e que cabe nos limites: 15min até dois dias, 1h até 62 dias, day até três anos, month para além disso. Se esse passo não couber, é tentado o passo mais grosso seguinte, depois os mais finos. A nota step_auto e o cabeçalho X-Mirox-Step indicam o passo que foi escolhido.

Cada métrica oferece os seus próprios passos. O catálogo lista-os como export_steps:

Tipo de métricaPassos
Energia de um contador que conta a cada minuto1min a year
Energia contada com menos frequência — turbinas eólicas, curtailment liquidado15min a year
Potência (W, var, VA, W/m²), tensão, corrente, frequência1min, 5min, 15min
Temperatura, estado de carga e outros níveis medidosdo intervalo de medição a year
Estados de funcionamento e códigos de estado15min
Performance ratioday, week, month, quarter, year
Disponibilidade15min, 1h, day, week, month, quarter, year
Métricas da sua organizaçãoda sua resolução mais fina a year, nunca mais fino do que 15min

A potência é oferecida apenas a 15 minutos ou mais fino. Uma potência diária ou mensal é uma média que esconde o que aconteceu; a métrica de energia dá o valor que se pretende.

Um passo nunca é alterado em silêncio. Com mismatch=refuse, a predefinição, um passo que uma das métricas não serve responde 400 step_not_served com os passos de cada métrica, e com step=auto as métricas que não partilham nenhum passo respondem 400 no_common_step. Com mismatch=sparse, esse pedido é entregue na mesma — consulte Métricas com passos diferentes.

Os passos de um dia ou mais cobrem intervalos completos. Um período que começa ou termina dentro de um deles é alargado para fora, com a nota window_aligned. As semanas começam à segunda-feira.

Métricas com passos diferentes

mismatch=sparse entrega um pedido cujas métricas não servem todas o passo, desde que cada uma sirva algum passo. A grelha do ficheiro é o passo pedido; com step=auto é o passo que mais métricas servem tal como está, escolhido pelo período e pelos limites como habitualmente. As posições das colunas e a forma da resposta CSV e JSON não mudam.

A métrica serveO que a exportação fazNota
só passos mais finosLê-a no mais grosso deles e agrega-a à grelha pela regra da sua grandeza: uma energia soma-se, uma leitura é a média, um rácio é recalculado a partir das suas duas metades, um estado mantém o seu último código.step_folded com o step lido
só passos mais grossosLê-a no mais fino deles e escreve cada valor na linha em que o seu próprio intervalo começa — o valor de um dia na linha da sua meia-noite local, o de um mês na linha do seu primeiro dia. As linhas intermédias ficam vazias.step_sparse com esse step
um passo mais grosso, mas nenhum dos seus intervalos começa numa linhaA coluna fica vazia, por exemplo um valor diário num ficheiro que começa às 06:00.metric_unavailable com reason off_grid

Dois casos são recusados em ambos os modos, com 400 step_not_served: um valor por mês, trimestre ou ano num ficheiro por week, porque o seu primeiro dia quase nunca é uma segunda-feira; e um valor mensal como o Marktwert num ficheiro por quarter ou year, porque uma soma ou uma média de meses não é esse valor. Num ficheiro por month é lido tal como está; num mais fino fica esparso.

A estimativa lista as mesmas notas, conta as leituras no passo próprio de cada métrica e marca um passo em per_step como dentro do limite mesmo quando nem todas as métricas o servem. A página Exportação de dados pede sempre com mismatch=sparse; um modelo traz o seu próprio mismatch na sua spec.

Grelha temporal

Com tz=local, as linhas seguem a hora local da central, incluindo a hora de verão: um dia é um dia local de 23, 24 ou 25 horas, um mês é um mês local. Com tz=utc, as linhas seguem o calendário UTC.

  • Em passos mais curtos do que um dia na hora local, a coluna Desvio UTC segue-se à coluna de tempo (+02:00). No dia em que os relógios atrasam, uma hora aparece duas vezes; o desvio distingue as duas. offset_column=false omite a coluna.
  • As centrais em fusos horários diferentes partilham uma só coluna de tempo. Um pedido destes é respondido no calendário UTC, com a nota merged_on_utc, quer as centrais estejam combinadas, quer separadas.
  • Com tz=utc e um passo de um dia ou mais, uma métrica que só existe por dia local não tem valor UTC. A sua coluna fica vazia, com a nota utc_calendar_unsupported.

O cabeçalho X-Mirox-Grid indica o calendário que foi usado: local:Europe/Berlin ou utc.

Várias centrais

Com multi_park_agg=merge, cada métrica é uma coluna para todas as centrais, combinada pela regra da métrica. O catálogo lista a regra como merge:

mergeValor combinadoMétricas
sumsomado entre as centraisenergia, grandezas contadas, potência
meanmédia entre as centraisirradiância, temperatura, estado de carga e outros níveis
pair_ratiorecalculado a partir dos totais das centraisperformance ratio, disponibilidade e outros rácios
firsto valor comumpreços, quando todas as centrais estão numa só zona de mercado
split_onlynão pode ser combinadoestados e códigos de estado

Uma métrica que não pode ser combinada é exportada por central, com a nota merge_not_meaningful. O mesmo vale para um rácio num passo em que as suas duas metades não estão disponíveis, e para preços de centrais em zonas de mercado diferentes.

Com multi_park_agg=split, cada métrica é uma coluna por central. Com uma única central, ambos dão o mesmo ficheiro.

As métricas de componentes são sempre por central (nota components_split_by_park).

Componentes

Uma métrica de um nível de componente dá uma coluna por componente. Os níveis são inverter, gak (caixa de junção), string, turbine, sensor, meter, battery_box (contentor), battery_storage (rack), battery_module, battery_cell e battery_pcs (conversor).

Sem components, a exportação contém todos os componentes visíveis das centrais, lane_limit por métrica e página. Se houver mais, a nota lanes_truncated indica o total; peça a página seguinte com lane_page.

components restringe a exportação aos componentes que indicar. Uma referência tem a forma <nível>:<id>, por exemplo inverter:1043. Um sensor ou contador que o Mirox mede, mas que não tem entrada nos componentes da central, tem uma referência da forma sensor:h3f9c2a71b04e6d5. A rota de componentes lista as referências de uma central. Uma referência que não pertence a nenhuma das centrais selecionadas responde 400 unknown_lane.

metrics=inverter.ac_power&components=inverter:1043,inverter:1044

Consultas MetricsQL em bruto

expr acrescenta a uma exportação uma consulta em bruto em MetricsQL, a linguagem de consulta da base de dados de séries temporais da plataforma — para uma série para a qual a coleção não tem métrica. O parâmetro pode repetir-se até cinco vezes; cada expressão pode ter até 4 000 caracteres. Um pedido pode levar só expr, ou metrics e expr em conjunto; as colunas das métricas vêm primeiro.

expr=sum by (inverter_id) (powerplant_inverter_power_ac)&park=ABC123DEF456&window=yesterday&step=15min

Uma expressão é avaliada por central, como um painel a avalia: sobre os dados da própria central, no passo pedido, como amostras brutas — qualquer passo é permitido, e values e as regras de agregação das métricas não se aplicam. O Mirox acrescenta a central a cada seletor da expressão; uma expressão que nomeia ela própria uma etiqueta park, organization ou plant é recusada com 400 expr_forbidden_label.

Casoheader=nameheader=id
Uma série por centralMetricsQL sum by (inverter_id) (powerplant_inverter_power_ac)expr1
Várias séries em alguma centralo cabeçalho seguido do name{labels} próprio de cada sérieexpr1{inverter_id="INV1"}
Várias centraiso nome da central à frente, como em qualquer colunaABC123DEF456/expr1

Quando uma expressão devolve várias séries em alguma das suas centrais, as colunas dessa expressão em todas as centrais levam as etiquetas das séries, para que um ficheiro tenha uma só nomenclatura por expressão. Um cabeçalho com mais de 1 000 caracteres é cortado com … dentro da expressão, nunca no texto da série. Na resposta JSON, columns[].key é o texto de header=id e columns[].metric é o ID da expressão, expr.e1, expr.e2, …, que as notas e as recusas usam. Uma central em que a expressão não devolve nada mantém uma coluna vazia, com a nota expr_no_series; com várias centrais, cada central recebe as suas próprias colunas, com a nota expr_split_by_park.

Uma expressão pode devolver no máximo 500 séries numa central (400 expr_too_many_series); agregue-a, por exemplo com sum by (…). As séries contam para as mesmas 400 colunas e 1 800 000 valores de qualquer exportação: a primeira leitura de cada expressão em cada central é uma sonda curta, as larguras são somadas em todo o pedido, e um pedido que ultrapassa os limites é recusado com 400 over_budget e params.series antes de qualquer leitura completa de qualquer expressão. Uma expressão que não se consegue analisar, está vazia, é demasiado longa ou que a base de dados recusa responde 400 expr_invalid com o reason.

A estimativa conta uma expressão como uma coluna por central, porque as suas séries só se conhecem depois de lida. As expressões não são guardadas em modelos.

Resposta CSV

A resposta está em UTF-8, com o nome de ficheiro series_export_<primeiro dia>_<último dia>_<passo>.csv. Uma resposta maior do que cerca de 1 MB é comprimida quando o pedido contém Accept-Encoding: gzip (curl: --compressed).

As colunas são, por esta ordem: o tempo, o Desvio UTC quando se aplica, e depois as métricas pela ordem de metrics.

Casoheader=nameheader=id
TempoDatetimestamp
Desvio UTCUTC offsetutc_offset
Uma central, ou centrais combinadasGrid feed-in (kWh)plant.grid_feedin
Centrais separadasSunnyside - Grid feed-in (kWh)ABC123DEF456/plant.grid_feedin
ComponenteWR 01.01 - AC power per inverter (W)ABC123DEF456/inverter:1043/inverter.ac_power
Componente, várias centraisSunnyside - WR 01.01 - AC power per inverter (W)ABC123DEF456/inverter:1043/inverter.ac_power
Métrica com variantes, como três faseso nome seguido da varianteo ID seguido de #<variante>
Uma métrica em dois modos de valoreso mesmo nome duas vezesplant.grid_feedin:delta, plant.grid_feedin:cumulative
Consulta MetricsQL em brutoMetricsQL <expressão>, seguido das etiquetas das séries quando há váriasexpr1, expr1{inverter_id="INV1"} — consulte Consultas MetricsQL em bruto

Use header=id em scripts e livros

Os nomes são feitos para pessoas: seguem language e mudam quando uma métrica muda de nome. Os IDs são estáveis. Um script ou um livro que encontra as suas colunas pelo cabeçalho deve pedir header=id. Num modelo pode também dar a cada coluna um texto de cabeçalho seu.

A coluna de tempo é formatada por passo, salvo se datetime_format for indicado:

PassoFormatoExemplo
1min, 5min, 15min, 1h%Y-%m-%d %H:%M2026-08-01 06:15
day, week%Y-%m-%d2026-08-01
month, quarter, year%Y-%m2026-08

Cada linha é marcada com o início do seu intervalo. Um valor em falta é uma célula vazia, pelo que «sem dados» e «zero» se distinguem; empty=zero escreve 0 em vez disso.

Quatro cabeçalhos da resposta repetem o que foi resolvido:

CabeçalhoConteúdoExemplo
X-Mirox-Stepo passoday
X-Mirox-Grido calendáriolocal:Europe/Berlin
X-Mirox-Windowinício e fim do período exportado2026-08-01T00:00:00+02:00/2026-09-01T00:00:00+02:00
X-Mirox-Notesas notas, separadas por ;step_auto:step=day

Resposta JSON

format=json responde com a mesma tabela em dados estruturados:

CampoConteúdo
windowstart, end, grid, tz_name, step, e aligned quando o período foi alargado
parksas centrais exportadas com uid, name e timezone
bucketsas linhas: start como hora com desvio, ts como segundos Unix
columnsuma entrada por coluna: key (o texto de header=id), metric, name, unit, digits, quantity, values_mode, merge, park_uid, lane (ref, level, title), variant, e values pela ordem de buckets; um valor em falta é null
notesas notas com code, metric e params
lanes_totalcomponentes por métrica de componente, antes da paginação
lane_page, lane_limita página que foi entregue
totalsvalues, queries e duration_ms da exportação

Notas

Uma nota diz-lhe o que o Mirox fez por iniciativa própria. Nunca faz falhar uma exportação. As notas fazem parte da resposta JSON e do cabeçalho X-Mirox-Notes. O cabeçalho contém até 1 KB de notas, escritas como code:key=value,key=value e separadas por ;. Se não couberem todas, o cabeçalho termina com notes_omitted:count=<n>; a resposta JSON contém-nas todas.

NotaSignificado
parks_droppedAs centrais que indicou mas não pode ler ficaram de fora. uids indica-as.
grant_requiredUma métrica monetária fica vazia numa central em que lhe falta a permissão de contabilidade.
value_mode_ignoredO modo de valores pedido não se aplica à métrica; foi exportada como native.
energy_delta_fine_stepUma energia por intervalo num passo inferior a 15 minutos mostra degraus do contador. twin indica a métrica de potência correspondente.
legacy_id_mappedUm ID da exportação anterior foi traduzido. from, to e exactness dizem como.
merge_not_meaningfulA métrica não pode ser combinada entre centrais e é mostrada por central.
components_split_by_parkAs métricas de componentes são mostradas por central.
merged_on_utcAs centrais estão em fusos horários diferentes; as linhas estão em UTC.
utc_calendar_unsupportedA métrica não tem valor no calendário UTC; a sua coluna está vazia.
window_alignedO período foi alargado a intervalos completos. start e end dão o resultado.
end_clampedO período entrava no futuro e termina agora.
step_autoO passo que auto escolheu.
step_foldedCom mismatch=sparse: a métrica foi lida num step mais fino e agregada à grelha.
step_sparseCom mismatch=sparse: a métrica tem um valor por step, na primeira linha de cada um dos seus intervalos.
lanes_truncatedA métrica tem mais componentes do que a página comporta. total, page e limit dizem onde está.
lanes_unpagedAs séries medidas sem entrada nos componentes da central foram exportadas tal como medidas.
metric_unavailableA métrica não tem valores para uma central; a coluna está vazia. reason é planned, not_applicable, no_data_source, draft, deleted, unknown_lane, off_grid ou, num modelo, not_permitted.
expr_no_seriesUma consulta em bruto não devolveu nenhuma série numa central; a sua coluna está vazia.
expr_split_by_parkAs consultas em bruto são lidas por central e recebem um conjunto de colunas por central.
provider_noteUma observação da própria métrica, por exemplo que fonte respondeu.

Uma coluna vazia é sempre mantida. Uma métrica que não se aplica a uma das centrais, ou uma métrica monetária sem a permissão de contabilidade, deixa a sua coluna no lugar, pelo que as posições das outras colunas nunca se alteram.

Estimar antes de exportar

GET /v1/export/series/estimate

A rota aceita os parâmetros da exportação, sem o formato do ficheiro, e responde com o que a exportação seria — sem ler dados e sem contar para o limite horário.

CampoConteúdo
step, grid, windowaquilo em que o pedido se resolve
parks, columns, rows, values, querieso tamanho
bytes_csv, seconds_estimatetamanho aproximado do ficheiro e duração
within_budgetse a exportação seria entregue
preview_okse é suficientemente pequena para a pré-visualização na aplicação (200 000 valores)
limitsos limites em vigor
per_steppara cada passo: served_by_all, values, within_budget, e o reason se não
refusalscada erro com que a exportação responderia, com code, params e hint
notesas notas que a exportação teria

Uma recusa nunca faz falhar a estimativa: responde 200 e lista a recusa. A estimativa conta, não gera nada: os rótulos das linhas e os cabeçalhos são os da exportação. Uma consulta em bruto conta como uma coluna por central, e com mismatch=sparse as notas indicam as colunas agregadas e esparsas.

O catálogo de métricas

GET /v1/export/series/catalog
ParâmetroValoresPredefiniçãoSignificado
park, portfolioUIDs—As centrais em relação às quais as métricas são avaliadas. Sem centrais, é listada a coleção inteira.
languageen, de, es, fr, it, ptenO idioma dos nomes e das descrições.
levelum níveltodosApenas um nível.
quantityenergy, amount, rate, level, ratio, state, pricetodasApenas uma grandeza.
searchtexto, até 100 caracteres—Pesquisa no nome, na descrição, na unidade, no ID e nos IDs da exportação anterior.
include_unavailabletrue, falsetrueLista também as métricas que não podem ser exportadas para as centrais selecionadas.
page, limitnúmeros, limit até 1001, 100Paginação.
sortorder, name, id, level, com - à frente para ordem descendenteorderA ordem da lista.
formatjson, csvjsoncsv responde com o glossário.

Cada métrica tem, além do seu ID, nome, descrição, unidade e nível:

CampoConteúdo
quantityo que o número é: energy, amount (outra grandeza contada), rate (potência), level, ratio, state ou price
value_modes, default_value_modeos modos de valores que oferece, e o que auto escolhe
export_stepsos passos que oferece
native_step_secondscom que frequência é medida
mergecomo várias centrais são combinadas
twin_item_idpara uma métrica de energia, a sua métrica de potência
lane_levelpara uma métrica de componente, o nível dos seus componentes
legacy_idsos IDs da exportação anterior pelos quais responde
applies_parksem quantas das centrais selecionadas se aplica
exportable, export_reasonse pode ser exportada e, se não, porquê: draft, planned, grant_required, not_applicable ou no_source

Até 10 centrais, cada central é verificada quanto ao equipamento de que uma métrica precisa. Acima disso, as centrais são avaliadas apenas pelo seu tipo; o que falta a uma central em particular aparece no momento da exportação como nota metric_unavailable.

Glossário. format=csv responde com a lista filtrada inteira num ficheiro, metric_catalog_<language>.csv, com as colunas ID, nível, nome, unidade, descrição, grandeza, modos de valores, passos, intervalo de medição, combinação entre centrais, nota e IDs anteriores. page e limit não se aplicam.

curl "https://service.mirox.io/api/v1/export/series/catalog?format=csv&language=en" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o metric_catalog_en.csv

Métricas disponíveis

A coleção está ordenada por nível. O prefixo de um ID diz onde uma métrica pertence.

NívellevelPrefixo do IDO que contém
Central · mediçõesplantplant.O que a própria central mede: o contador de rede, as somas dos inversores, os sensores do local, os limites de potência que lhe foram impostos.
Central · referênciaplant_referenceplant.O que a central deveria ter produzido: irradiação no plano dos módulos, produção esperada, performance ratio, produção específica, perdas.
Central · compensaçãoplant_compensationplant.Curtailment e perdas por limitação como energia e potência, por destinatário e método.
Métricasmetricsavailability., organization.Valores de disponibilidade, horas de sol e as métricas da sua organização.
Inversorinverterinverter.Uma coluna por inversor.
Caixa de junçãogakgak.Uma coluna por caixa de junção.
Stringstringstring.Uma coluna por string.
Bateriabatterybattery.O armazenamento no seu conjunto: energia, potência, estado de carga, setpoints.
Contentor de bateriasbattery_boxbattery_box.Uma coluna por contentor.
Rack de bateriasbattery_storagebattery_storage.Uma coluna por rack.
Módulo de bateriabattery_modulebattery_module.Uma coluna por módulo.
Célula de bateriabattery_cellbattery_cell.Uma coluna por célula ou ponto de medição.
Conversor de bateria (PCS)battery_pcsbattery_pcs.Uma coluna por conversor.
Aerogeradorturbineturbine.Uma coluna por turbina.
Sensorsensorsensor.Uma coluna por sensor: irradiância, irradiação, temperatura, humidade, vento.
Contadormetermeter.Uma coluna por contador de energia.
Infraestruturainfrastructureinfrastructure.O caminho dos dados e o local: completude, estado dos registadores, rede, alarmes, ligações de controlo.
Meteorologiaweatherweather.A meteorologia no local, incluindo vento e temperatura a 80, 120 e 180 m.
Mercadomarketmarket.Preços e valores de mercado.
Finanças da centralfinancialfinancial.Valores monetários da central. Requerem a permissão de contabilidade.

A lista completa com nomes, unidades e descrições no seu idioma é o catálogo, o ficheiro de glossário, ou Explicações no separador Métricas. Os valores de previsão meteorológica da exportação anterior não fazem parte da coleção; consulte o guia de migração.

Componentes de uma central

GET /v1/export/series/lanes
ParâmetroValoresPredefiniçãoSignificado
parkum UID de centralobrigatórioA central.
levelum nível de componenteobrigatórioConsulte Componentes.
metricum ID de métrica—Para sensores e contadores: lista os que forneceram esta métrica nos últimos 30 dias.
searchtexto—Pesquisa nos nomes.
include_hiddentrue, falsefalseLista também os componentes ocultos.
page, limitnúmeros, limit até 1001, 50Paginação.
sortorder, name, com - à frente para ordem descendenteorderorder é a ordem das colunas na exportação.

Cada entrada tem a referência ref para o parâmetro components, o name, o level, o elemento superior (parent_ref, parent_name — o inversor de uma string, por exemplo), attributes (role de um contador, position de um sensor de irradiância, vendor), hidden, e source: db para uma entrada dos componentes da central, store para uma série que é medida mas não tem essa entrada.

Uma central que não existe e uma central que não pode ler respondem ambas 404 park_not_found.

Sistema de modelos

Um modelo é uma lista guardada de métricas com predefinições para passo, período, valores, fuso horário, combinação de centrais, tamanho da página de componentes e cabeçalhos das colunas. Para que servem os modelos e como geri-los na aplicação está no guia da exportação de métricas.

Exportar um modelo

GET /v1/export/series/template/{template_uid}

A rota aceita os parâmetros da exportação, exceto metrics, components e values, que o modelo fixa. Cada parâmetro que omitir assume a predefinição do modelo; cada parâmetro que indicar prevalece sobre ela.

curl --compressed "https://service.mirox.io/api/v1/export/series/template/CAFE1000CAFE?park=ABC123DEF456&window=previous_month&header=id" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o standard.csv
  • Um modelo de outra organização responde 404 template_not_found.
  • Um modelo legado responde 400 template_is_legacy; params.legacy_url é a ligação que o exporta.
  • Uma coluna cuja métrica já não está disponível é exportada vazia sob o seu cabeçalho, com a nota metric_unavailable. O mesmo se aplica a uma métrica da sua organização quando exporta como Externo (reason not_permitted).

Modelos do sistema

ModeloUIDPassoPeríodo
Exportação padrãoCAFE1000CAFEdayprevious_month
Exportação alargadaCAFE1001CAFEdayprevious_month
Exportação alargada (disponibilidade dos inversores)CAFE1002CAFEdayprevious_month
Exportação de disponibilidade energéticaCAFE1003CAFEdayprevious_month
Relatório técnicoABCD12340002dayprevious_month
Turbinas eólicasCAFE1010CAFEdayprevious_month
Armazenamento em bateriasCAFE1020CAFEdayprevious_month
Sensores de irradiânciaCAFE1030CAFE15minyesterday

Os primeiros cinco sucedem a CAFE0000CAFE, CAFE0001CAFE, CAFE0002CAFE, CAFE0003CAFE e ABCD12340001, que continuam a funcionar na rota legada. As suas colunas estão listadas no guia de migração. Oferecem os passos day, week, month, quarter e year; os quatro primeiros oferecem também 15min e 1h.

Gerir modelos

Os modelos são listados, lidos, criados, alterados e eliminados em /v1/export/template. A leitura funciona com um token Metric Export. A escrita requer a função de organização Administrador, Moderador, Gestor de ativos (técnico) ou Gestor de ativos (comercial) e uma sessão iniciada ou um token Acesso total.

PedidoFinalidade
GET /v1/export/templateListar modelos. view=current lista os modelos do sistema desta página e os modelos da sua organização; view=legacy, a predefinição, lista os modelos guardados como antes; view=all lista ambos. kind=series ou kind=legacy filtra.
GET /v1/export/template/{template_uid}Ler um modelo.
POST /v1/export/templateCriar um modelo com kind=series e o conteúdo em spec. Sem kind, o pedido cria um modelo legado a partir de metric_ids, como antes.
PUT /v1/export/template/{template_uid}Alterar o nome, a descrição ou spec. O tipo não pode mudar.
DELETE /v1/export/template/{template_uid}Eliminar um modelo. Os modelos do sistema não podem ser alterados nem eliminados.

O spec de um modelo:

CampoValoresPredefinição
items1 a 40 entradas, cada uma com metric e, opcionalmente, values e labelobrigatório
stepum passoauto
valuesum modo de valoresauto
tzlocal, utclocal
windowuma predefiniçãoprevious_month
multi_park_aggmerge, splitmerge
lane_limit1 a 10050
headername, idname
mismatchrefuse, sparserefuse

label é o texto de cabeçalho da coluna com header=name. Uma métrica só pode aparecer uma vez, e um modelo não contém consultas em bruto. Quando um modelo é guardado, todas as métricas têm de ser exportáveis, e as métricas têm de partilhar um passo — com mismatch=sparse, cada uma tem de servir algum passo; caso contrário, a resposta é 422 spec_invalid e params.problems indica a métrica e o motivo. Um modelo corre com o seu próprio mismatch (a aplicação mostra-o como Métricas de outro passo: Estrito ou Flexível); o parâmetro na ligação de exportação prevalece.

Converter um modelo legado

POST /v1/export/template/{template_uid}/convert
CampoValoresSignificado
nameaté 100 caracteresO nome do novo modelo. Predefinição: o nome do modelo legado seguido de «(new)».
dry_runtrue, falsetrue responde com a correspondência sem criar nada.

A resposta lista mapped (legacy_id, metric, values, exactness: exact ou approximate) e unmapped (legacy_id, reason: formula, no_equivalent, report_value ou instant, e até três suggestions), e, salvo se tiver sido um ensaio, o novo template. Um ensaio responde 200, uma conversão 201.

O novo modelo exporta dias ao longo do mês anterior. O modelo legado nunca é alterado. Duas colunas legadas que leem o mesmo contador tornam-se uma só coluna. 422 nothing_to_convert significa que nenhuma coluna tem equivalente, ou que o modelo não é um modelo legado.

Limites

Uma exportação é respondida dentro de um único pedido, pelo que o seu tamanho é limitado. Cada limite é verificado antes de os dados serem lidos; um pedido demasiado grande é recusado de imediato e diz-lhe o que caberia.

LimiteValor
Métricas por pedido20; num modelo 40
Consultas MetricsQL em bruto por pedido5, de 4 000 caracteres cada, com no máximo 500 séries por central
Centrais por pedido50
Componentes por métrica e página50 por predefinição, no máximo 100
Colunas400
Valores por coluna180 000 — 125 dias a 1min, 625 dias a 5min, cinco anos a 15min
Valores no total1 800 000 (linhas × colunas)
Período1827 dias
Leituras do armazenamento de medições por pedido1 500
Duração50 segundos
Exportações por utilizador e hora240
Exportações em curso ao mesmo tempo3 por organização

Dividir uma exportação grande

400 over_budget indica em params o que era necessário e o que é permitido, e em hint a saída: step, o passo mais grosso seguinte que cabe, e max_days, o período mais longo que cabe no passo pedido. Se construir pedidos num script, consulte primeiro a estimativa; o seu per_step lista o tamanho para cada passo.

Se não quiser nem um passo mais grosso nem um período mais curto, divida a exportação:

Dividir porComo
TempoUm pedido por mês ou trimestre. Use os parâmetros de calendário (year=2026&month=7) e junte os ficheiros.
CentralUm pedido por central ou carteira.
MétricaAs métricas de componentes em pedidos próprios. Uma métrica de componente numa central com 200 inversores são 200 colunas.
Páginalane_page=1, 2, … para os componentes de uma métrica.

Algumas métricas são apuradas a partir de várias fontes para cada dia, sobretudo plant.production_reported (Produção, resolvida). Precisam de muito mais leituras do armazenamento de medições do que uma leitura de contador, em todos os passos. Um pedido ou um modelo que contém uma métrica destas abrange atualmente cerca de nove meses-central: uma central ao longo de nove meses, ou nove centrais ao longo de um mês. Um passo de uma semana ou mais alarga o período a intervalos completos, e é o período alargado que conta. Divida essas exportações por tempo ou por central, ou exporte a métrica num pedido próprio.

429 busy e 429 rate_limited têm o cabeçalho Retry-After com os segundos a aguardar.

Erros

Um erro das rotas desta página tem esta forma:

{
  "detail": {
    "code": "step_not_served",
    "message": "The step is not served by every requested metric.",
    "params": {"step": "1h", "metrics": {"plant.grid_power": ["1min", "5min", "15min"]}},
    "hint": {"offered_common": ["1min", "5min", "15min"]}
  }
}

code é estável e destina-se a programas. message é um texto em inglês para pessoas. params diz o que estava errado, hint o que funcionaria.

EstadocodeSignificadoparams e hint
400scope_requiredNão foi indicado nem park nem portfolio.hint.example
400unknown_metricUm ID de métrica não existe.params.ids; hint.suggestions com IDs semelhantes
400legacy_metric_idUm ID da exportação anterior não tem equivalente na coleção.params.id, params.legacy_url; hint.reason, hint.closest, hint.pending, hint.legacy_url
400metric_not_exportableA métrica existe, mas não é uma série temporal que possa exportar.params.id, params.reason: draft, planned, no_source, events ou master
400window_conflictO período foi indicado de mais de uma forma.params.families
400window_invalidO período não é válido.params.reason: end_before_start, start_in_future, before_2020, too_long, day_requires_month, start_required ou invalid_date
400step_not_servedUma métrica não oferece o passo pedido.params.metrics com os passos de cada métrica; hint.offered_common
400no_common_stepAs métricas não partilham nenhum passo.params.metrics; hint.split
400over_budgetA exportação é maior do que um limite.params.values, limit, queries, query_limit, columns, column_limit, parks; com mais de 50 centrais, params.parks e park_limit; com uma consulta em bruto, params.series; hint.step, hint.max_days, hint.lane_limit, hint.reduce
400unknown_laneUma referência de componente não pertence a nenhuma das centrais.params.refs
400expr_invalidUma consulta em bruto não pode ser executada.params.expr, params.reason: empty, syntax (com detail), too_long, too_large, store (com o detail da base de dados) ou parser_unavailable
400expr_forbidden_labelUma consulta em bruto nomeia ela própria uma central, um parque ou uma organização.params.expr, params.labels
400expr_too_many_seriesUma consulta em bruto devolve mais de 500 séries numa central.params.expr, params.park, params.series, params.limit; hint.reduce
400separator_conflictO separador de colunas e o separador decimal são iguais.—
400invalid_datetime_formatdatetime_format não é um padrão válido.hint.example
400template_is_legacyO modelo é um modelo legado.params.legacy_url
403no_accessible_parksNão pode ler nenhuma das centrais selecionadas.—
403metric_forbiddenFoi pedida uma métrica da sua organização com a função de organização Externo.params.ids
404template_not_found, park_not_foundO modelo ou a central não existe, ou não o pode ler.—
409name_conflictJá existe um modelo com este nome.params.name
422—Um parâmetro tem um valor fora da sua lista, ou metrics contém mais de 20 IDs.o campo e o motivo
422spec_invalid, use_spec, nothing_to_convertUm modelo não pode ser guardado ou convertido tal como foi enviado.params.problems
429busyHá demasiadas exportações em curso.cabeçalho Retry-After
429rate_limitedO limite horário está esgotado.cabeçalho Retry-After
502store_errorO armazenamento de medições respondeu com um erro. Nada foi exportado; um valor nunca é substituído por zero.params.metric
503store_timeoutO armazenamento de medições não respondeu a tempo.hint.step com um passo mais grosso

401 significa que o token está em falta, expirou ou foi revogado.

IDs da exportação anterior

O parâmetro metrics também aceita os IDs da exportação anterior, como energy_grid_daily ou raw_grid_power. Um ID com equivalente é traduzido para a sua métrica, no modo de valores que mais se aproxima do número anterior, e a nota legacy_id_mapped diz que métrica respondeu e se o número é o mesmo (exact) ou a mesma grandeza lida de uma forma melhor (approximate).

Um ID sem equivalente responde 400 legacy_metric_id. hint.reason diz porquê, hint.closest indica a métrica mais próxima quando existe, hint.pending indica a métrica que está previsto vir a fornecê-lo, e legacy_url é a ligação da exportação anterior que continua a fornecer o ID. Com mais centrais do que uma ligação pode indicar, legacy_url indica a primeira central e params.legacy_url_scope é first. Um ID de componente de um nível de bateria não tem ligação da exportação anterior; hint.legacy_route é então none. O guia de migração lista todos os IDs.

Excel e scripts

  • Exportação de métricas para Excel — receitas, e a ligação Power Query com o cabeçalho Authorization
  • Gerador de relatórios externo — um exemplo completo em Python

Funcionalidades relacionadas

  • Exportação de métricas — a página Exportação de dados
  • Migrar para a exportação de métricas — IDs antigos, novas métricas e o que muda
  • API de exportação legada — as ligações de exportação anteriores
  • Métricas — definir métricas próprias e exportá-las
  • Tokens de API — criar o token Metric Export
  • Visão geral da API — a referência interativa de todas as rotas
Prev
Exportação de métricas
Next
Migrar para a exportação de métricas
© 2026 Mirox Verwaltungs GmbH. Todos os direitos reservados. | Política de Privacidade